在my.cnf中将MySQL的默认字符集更改为UTF-8?
在my.cnf中将MySQL的默认字符集更改为UTF-8?
目前,我们在 PHP 中使用以下命令来设置应用程序的字符集为 UTF-8。
由于这是一些额外的工作,我们想在 MySQL 中将其设置为默认设置。我们可以在 /etc/my.cnf 或其他位置中做到这一点吗?
SET NAMES 'utf8' SET CHARACTER SET utf8
我在 /etc/my.cnf 中查找默认字符集,但是没有关于字符集的任何内容。
此时,我执行了以下操作来将 MySQL 的字符集和校对变量设置为 UTF-8:
skip-character-set-client-handshake character_set_client=utf8 character_set_server=utf8
这是正确处理此项任务的方法吗?
admin 更改状态以发布 2023年5月23日
对于最新版本的MySQL来说,
default-character-set = utf8
会引起问题。我认为这已经被弃用了。
正如Justin Ball在升级到MySQL 5.5.12,现在MySQL无法启动中所说,你应该:
-
删除该指令,这样应该就好了。
-
然后你的配置文件(例如' /etc/my.cnf')应该像这样:
[mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8
-
重启MySQL。
-
为确保你的MySQL是UTF-8,可以在MySQL提示符中运行以下查询:
-
第一个查询:
mysql> show variables like 'char%';
输出应该像这样:
+--------------------------+---------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/charsets/| +--------------------------+---------------------------------+
-
第二个查询:
mysql> show variables like 'collation%';
查询输出是:
+----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_unicode_ci | | collation_server | utf8_unicode_ci | +----------------------+-----------------+
-
要将默认设置为UTF-8,您需要将以下内容添加到my.cnf/my.ini中
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] collation-server = utf8mb4_unicode_520_ci init-connect='SET NAMES utf8mb4' character-set-server = utf8mb4
如果您想要更改现有数据库的字符集,请告诉我...您的问题没有直接说明,因此我不确定是否是您想要做的。
编辑:由于utf8仅为UTF-8的子集,我在原始答案中用utf8mb4替换了utf8。 MySQL和MariaDB都将UTF-8称为utf8mb4。