修改 mysql COLLATE 字符集

MySQL
878
0
0
2022-09-25

将数据库字符集从utf8修改为utf8mb4和修改库的默认字符集

alter database test default character set utf8mb4 COLLATE utf8mb4_unicode_ci;

修改表的默认字符集

ALTER TABLE test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

将表中原来的数据转换为utf8mb4

ALTER TABLE test CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

#修改列字符集

ALTER TABLE test CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

修改字符集参数

[client]

default-character-set = utf8mb4

//default-character-set = utf8

[mysqld]

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

//或者

[mysqld]

character-set-server = utf8

init-connect='set names utf8' 对character_set_client、character_set_connection、character_set_results起作用

character_set_system 是系统元数据(字段名等)存储时使用的编码字符集,该字段和具体存储的数据无关。总是固定不变的——utf8. 我们可以不去管它。

character_set_server 量设置的 server 级别的(mysqld级别的) 字符集

一同设置的还有 server 级别的排序规则:collation_server

改完配置需要重启下mysql: systemctl restart mysqld

至于utf8mb4_unicode_ci 和 utf8mb4_general_ci的区别,可以看下这篇文章

MYSQL中的COLLATE之utf8mb4_general_ci和utf8mb4_unicode_ci区别