创建存储过程:设置字符集和排序规则

时间:2012-08-12 06:22:57

标签: mysql stored-procedures character-encoding

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

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。感谢。

2 个答案:

答案 0 :(得分:13)

omg omg omg

  

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之前的用户。他们在黑暗中摸索着!

答案 1 :(得分:4)

支持bugreport。它显示过程及其参数与数据库的默认字符集相关,但是使用二进制字符串。

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

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