MariaDB社区

标题: MySQL-涉及到PROCEDURE的中文乱码问题 [打印本页]

作者: ito_oti    时间: 2010-12-31 20:27
标题: MySQL-涉及到PROCEDURE的中文乱码问题
在MySQL中创建一个PROCEDURE:

mysql> CREATE PROCEDURE POS.myTest(OUT S VARCHAR(25))
     -> SET S = '字符';

执行的时候出现下面的情况:

mysql> CALL POS.myTest(@a);
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> SELECT @a;
+------+
| @a   |
+------+
| ??   |
+------+
1 row in set (0.00 sec)

我已经将涉及字符的变量设置成了"utf8":

mysql> SHOW VARIABLES LIKE 'chara%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

显示表中的中文字符,或是将中文加到表中都没有问题.而执行下面的操作也OK:

mysql> SET @c = '中文';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @c;
+--------+
| @c     |
+--------+
| 中文   |
+--------+
1 row in set (0.00 sec)

但是在CREATE PROCEDURE中加入"SET @c = '中文'"后执行起来就出现乱码.它的warning信息是这样的:

mysql> SHOW warnings;
+---------+------+----------------------------------------------------------------------------+
| Level   | Code | Message                                                                    |
+---------+------+----------------------------------------------------------------------------+
| Warning | 1366 | Incorrect string value: '\xE5\xAD\x97\xE7\xAC\xA6' for column 'S' at row 1 |
+---------+------+----------------------------------------------------------------------------+
1 row in set (0.00 sec)

请问有谁知道原因?谢谢!




欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2