MySQL修改字符编码格式为utf8mb4
2020-07-05 网络
前一篇文章讲了MySQL不宜使用utf8字符编码格式,应使用utf8mb4,此篇文章讲如何设置以前修改MySQL数据库字符编码格式。
1.设置字符编码格式
查看当前数据库字符编码格式命令
show variables like "%char%";
如果你的数据库字符编码格式为utf8格式的,则显示内容大致如下:
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 | D:\phpStudy\PHPTutorial\MySQL\share\charsets\ | +--------------------------+-----------------------------------------------+ 8 rows in set (0.00 sec)
2.修改现有表及字符编码格式
找到my.cnf 文件(Linux下名为my.cnf,windows下名为my.ini),Linux的文件一般在/usr/local/mysql目录。
添加以下代码:(MySQL 版本需要在5.5.3及以上才支持utf8mb4,mysql 8.0 版默认utf8mb4,不需要设置)
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
修改后重启MySQL,再使用[show variables like "%char%";]命令查看,会显示以下内容:
mysql> show variables like "%char%"; +--------------------------+-----------------------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | D:\phpStudy\PHPTutorial\MySQL\share\charsets\ | +--------------------------+-----------------------------------------------+ 8 rows in set (0.00 sec)
修改数据库字符编码
alter database dbname character set utf8mb4 ;
修改数据库表的字符编码方式
alter table tablename convert to character set utf8mb4;创建数据库指定数据库的字符集
create database dbname character set utf8;
修改数据库表指定字段的字符编码
alter table admin change field_1 field_1 varchar(255) character set utf8mb4 collate utf8mb4_unicode_ci;
3.修改后注意事项
字符集不对可能导致left join 等连接查询时索引不生效。
utf8mb4_unicode_ci 和utf8_general_ci 的字段索引没法匹配。
原来utf8 是使用3-byte 存储一个字符,现在变为了4-byte。
这种情况通常来讲会把255 长度的字符类型字段长度修改为191 。如果在该字段上存在索引,更应该注意。