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

dot*_*hen 13 mysql stored-procedures character-encoding

在创建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
Run Code Online (Sandbox Code Playgroud)

最后三项应该是Unicode.谢谢.

kel*_*ogs 15

omg omg omg

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

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

简而言之,打开一个mysql命令行,输入

SET NAMES UTF8;
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢!`SET NAMES utf8`实际上影响`character_set_client`和`collat​​ion_connection`,但不影响`Database Collat​​ion`.我怀疑在创建数据库时必须设置最后一个,顾名思义,并且实际上可能不是存储过程本身的属性.很好找! (3认同)