14

创建 MySQL 存储过程时如何设置字符集和排序规则?MySQL 文档没有提供任何示例,并且对一般语法有些不清楚。

mysql> show procedure status\G

*************************** 1. row ***************************
                  Db: MslLandingSequence
                Name: DeploySkycrane
                Type: PROCEDURE
             Definer: curiosity@localhost
            Modified: 2012-08-04 00:05:16
             Created: 2011-11-12 00:02:45
       Security_type: DEFINER
             Comment: 
character_set_client: latin1
collation_connection: latin1_swedish_ci
  Database Collation: latin1_swedish_ci

最后三个项目应该是 Unicode。谢谢。

4

2 回答 2

18

character_set_client 是创建例程时 character_set_client 系统变量的会话值。collat​​ion_connection 是创建例程时 collat​​ion_connection 系统变量的会话值。数据库排序规则是与例程关联的数据库的排序规则。这些列是在 MySQL 5.1.21 中添加的。

http://dev.mysql.com/doc/refman/5.1/en/show-procedure-status.html

总之,打开一个mysql命令行,输入

SET NAMES UTF8;

然后删除并重新导入存储过程。这解决了我的问题。我什至不想考虑 5.1.21 之前的用户。他们在黑暗中摸索!

于 2013-10-15T13:50:13.283 回答
4

注意错误报告。它表明过程及其参数与数据库的默认字符集无关,但始终与二进制字符串相关联。

因此,您必须为参数显式指定字符集属性。

简单的重新创建过程可能无法解决问题。

于 2015-04-30T04:49:52.467 回答