原文
How to store UTF8 characters in MySQL - Ubiq BI
引言
对于 《如何在MySQL中存储UTF8字符》 的一篇英文博客浏览和集体实战笔记。留神集体试验过程中应用了docker的Mysql 5.7 版本,读者能够依据本身状况调整。
1. Shell 查看字符集
如果不习惯Linux的小黑框,最简略的形式是用navicat的命令行工具查问,留神用户须要具备对应的系统配置权限,倡议用root操作:
首先咱们右击navicat的数据库连贯配置(已筹备好),抉择“命令列界面”:
之后是navicat仿照的Shell,期待用户输出:
运行上面的命令能够查看所有字符集配置:
SHOW VARIABLES LIKE 'character_set%';
集体的试验后果如下:
mysql> SHOW VARIABLES LIKE 'character_set%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8mb4 || character_set_connection | utf8mb4 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8mb4 || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+8 rows in set (0.03 sec)
能够看到字符集并不对立。
2. 批改字符集为UTF-8
集体应用为docker的mysql自定义映射的配置文件地位,和原始的装置形式配置文件配置略有不同。不过根本的操作形式都是批改my.cnf
的配置:
[client] default-character-set=utf8mb4 [mysqld] character-set-server = utf8mb4
集体操作记录如下,定位到映射文件地位之后,间接vim
批改配置文件:
[root@localhost conf]# vim /opt/mysql/conf/mysql.cnf
在配置文件当中做如下改变:
[root@localhost conf]# cat /opt/mysql/conf/mysql.cnf # mysqld custom[mysqld]# 上面局部能够疏忽sort_buffer_size = 16Mread_rnd_buffer_size = 2Mmax_connections = 10024# set character to utf-8character-set-server = utf8mb4[client]# 留神客户端连贯也要一并设置default-character-set=utf8mb4
批改之后重启docker的mysql镜像。
[root@localhost conf]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES58fa52f21404 mysql:5.7 "docker-entrypoint.s…" 3 hours ago Up 2 hours 33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp mysql57
重启之后高枕无忧。
[root@localhost conf]# docker restart 58f
之后仍旧是连贯mysql数据库,持续应用show variables like 'character%';
命令查看以后字符集。
批改之前:
mysql> SHOW VARIABLES LIKE 'character_set%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8mb4 || character_set_connection | utf8mb4 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8mb4 || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+
批改之后后果如下:
mysql> show variables like 'character%';+--------------------------+----------------------------+| 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 | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+
3. 数据表转换为UTF-8
运行上面的命令,将你的数据库的字符集和排序改为UTF8。用你的数据库名称替换上面的dbname。
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`
dbname 批改为本人的数据库即可
上述命令将把你的数据库中的所有表转换为UTF8MB4 格局。