MySQL设置'collation_connection'的默认值

3
我有一个MySql 5.6数据库,数据库使用的是utf8_unicode_ci排序规则。每次我创建新表时,该表都会使用utf8_unicode_ci排序规则创建,但varchar列将设置为utf8_general_ci排序规则。
当我查看变量时,看到以下内容:
'collation_connection', 'utf8_general_ci'
'collation_database', 'utf8_unicode_ci'

我可以手动执行SET collation_connection = utf8_unicode_ci;,然后创建表格,一切都能够像我想要的那样工作。
问题是,如何设置默认的collation_connection?我已经尝试使用以下文章中的方法通过my.cnf进行设置,但似乎无法改变我的连接。有什么想法吗?
参考链接:Change MySQL default character set to UTF-8 in my.cnf?

你尝试在my.cnf中添加collation_connection=utf8_unicode_ci了吗? - gen
SET NAMES utf8 COLLATE utf8_unicode_ci 这样做没问题,但是需要在连接之后执行。 - Rick James
@gen 这是一个非法的配置设置,mysql CLI 配置文件中存在时将无法启动。 - Christopher Schultz
1个回答

0

您可以通过在 my.cnf 配置文件的 [mysqld] 部分中包含以下行来配置 '每个连接的客户端要执行的字符串'

[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci;'

或许更好的方法是使用SET NAMES(详情请参见此处):

[mysqld]
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;'

要为新表设置默认字符集和排序规则,您需要指定:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

参考手册 解释:

如果在 CREATE DATABASE 语句中未指定数据库字符集和排序规则,则服务器字符集和排序规则将用作默认值。它们没有其他用途。

考虑使用 utf8mb4 替代 utf8。请参考此处


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接