Arash Mousavi Asked: 2013-08-02 00:57:16 +0800 CST2013-08-02 00:57:16 +0800 CST 2013-08-02 00:57:16 +0800 CST 更改 TEMPORARY TABLE 默认排序规则 772 当我CREATE TEMPORARY TABLE用来创建一个临时表时,这个表的排序规则是utf8_unicode_ci默认的。为什么默认是utf8_unicode_ci?如何更改默认值? mysql mysql-5.5 2 个回答 Voted Best Answer RolandoMySQLDBA 2013-08-02T09:34:36+08:002013-08-02T09:34:36+08:00 CREATE TABLE 语法允许指定字符集和排序规则 CREATE TABLE的MySQL 文档显示了以下语法: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options] table_options: table_option [[,] table_option] ... table_option: ENGINE [=] engine_name | AUTO_INCREMENT [=] value | AVG_ROW_LENGTH [=] value | [DEFAULT] CHARACTER SET [=] charset_name <<------ (YOU NEED THIS OPTION) | CHECKSUM [=] {0 | 1} | [DEFAULT] COLLATE [=] collation_name <<------ (YOU NEED THIS OPTION) | COMMENT [=] 'string' | CONNECTION [=] 'connect_string' | DATA DIRECTORY [=] 'absolute path to directory' | DELAY_KEY_WRITE [=] {0 | 1} | INDEX DIRECTORY [=] 'absolute path to directory' | INSERT_METHOD [=] { NO | FIRST | LAST } | KEY_BLOCK_SIZE [=] value | MAX_ROWS [=] value | MIN_ROWS [=] value | PACK_KEYS [=] {0 | 1 | DEFAULT} | PASSWORD [=] 'string' | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} | STATS_AUTO_RECALC [=] {DEFAULT|0|1} | STATS_PERSISTENT [=] {DEFAULT|0|1} | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}] | UNION [=] (tbl_name[,tbl_name]...) 因此,您的语法应该是这样的: CREATE TEMPORARY TABLE tblname ( ) ENGINE=MyISAM CHARACTER SET '...' COLLATE '...'; 试试看 !!! 如果要操作排序规则的默认选项,您有以下内容: collation_connection collation_database collation_server 这些变量可以在全局或会话级别更改。 如果要永久设置排序规则,可以将其放入/etc/my.cnf [mysqld] collation_connection = 'collation_connection' 并重新启动mysql 如果您只想为单个 BB 连接使用此功能,您可以在会话中运行它 SET collation_connection = 'collation_connection '; 请参阅我最近的帖子为什么有不同级别的 MySQL 排序规则/字符集?查看已安装的字符集和排序规则。 Rex 2013-08-02T01:12:53+08:002013-08-02T01:12:53+08:00 通常临时表采用服务器/数据库级别的默认值。如果您想更改它,请在服务器/数据库级别进行更改,这也会影响您的所有其他对象。 如果您只希望当前临时表使用一次,请在临时表创建过程中强烈声明它。
CREATE TABLE 语法允许指定字符集和排序规则
CREATE TABLE的MySQL 文档显示了以下语法:
因此,您的语法应该是这样的:
试试看 !!!
如果要操作排序规则的默认选项,您有以下内容:
这些变量可以在全局或会话级别更改。
如果要永久设置排序规则,可以将其放入
/etc/my.cnf
并重新启动mysql
如果您只想为单个 BB 连接使用此功能,您可以在会话中运行它
请参阅我最近的帖子为什么有不同级别的 MySQL 排序规则/字符集?查看已安装的字符集和排序规则。
通常临时表采用服务器/数据库级别的默认值。如果您想更改它,请在服务器/数据库级别进行更改,这也会影响您的所有其他对象。
如果您只希望当前临时表使用一次,请在临时表创建过程中强烈声明它。