【MySQL】MySQL无法插入中文、不持支中文、输入中文报错的解决方法

1.3 MySQL字符集设置

1.3.1 问题描述

​ 在MySQL5.7中的表添加数据时,如果添加字符串数据是中文时,会报错。而在MySQL8.0中添加中文数据则不会报错。

​ 原因是MySQL 5.7默认字符集是 latin,是欧洲用的字符集,不支持中文。而MySQL 8.0默认字符集是 UTF-8,支持中文。

​ 此时,在使用MySQL 5.7之前,需要把字符集更改为 UTF-8。具体操作如下:

1.3.2 解决步骤

步骤1:查看编码命令

show variables like 'character_%';

此命令是查看数据库中包含 ‘character_’ 开头的变量或属性。

例子:

mysql> show variables like 'character_%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | gbk                                                     |
| character_set_connection | gbk                                                     |
| character_set_database   | latin1                                                  |
| character_set_filesystem | binary                                                  |
| character_set_results    | gbk                                                     |
| character_set_server     | latin1                                                  |
| character_set_system     | utf8                                                    |
| character_sets_dir       | E:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.02 sec)

可以看到第3行与第6行的 database 和 server 都是 latin1 字符集,因此都不支持中文。

show variables like 'collation_%';

此命令是查看数据库中包含 ‘collation_’ 开头的变量或属性。是用于字符串的比较规则。

例子:

mysql> show variables like 'collation_%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | gbk_chinese_ci    |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set, 1 warning (0.00 sec)

可以看到第2和第3行,database 和 server 的比较规则都是基于 latin1 字符集的比较规则。都是不支持中文的。

步骤2:修改MySQL的数据目录下的my.ini配置文件

根据你的电脑的MySQL安装路径找到 my.ini 配置文件,这里我的安装路径是 E:\ProgramData\MySQL\MySQL Server 5.7。用 EditPlus 打开。

【MySQL】MySQL无法插入中文、不持支中文、输入中文报错的解决方法_第1张图片

[mysql]	#大概在第63行左右,在其下添加
...
default-character-set=utf8	#默认字符集

[mysqld] #大概在第76行左右,在其下添加
...
character-set-server=utf8
collation-server=utf8_general_ci

保存后即可关闭该文件。

步骤3:重启服务

去计算机管理–>服务中重新启动 MySQL57:

【MySQL】MySQL无法插入中文、不持支中文、输入中文报错的解决方法_第2张图片

步骤4:察看编码命令

重启好后,在Windows命令行中重新登录 MySQL57。

mysql -uroot -P13306 -p
Enter password: *********

再次输入这两个命令:

show variables like 'character_%';
show variables like 'collation_%';

输出:

mysql> show variables like 'character_%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | gbk                                                     |
| character_set_connection | gbk                                                     |
| character_set_database   | utf8                                                    |
| character_set_filesystem | binary                                                  |
| character_set_results    | gbk                                                     |
| character_set_server     | utf8                                                    |
| character_set_system     | utf8                                                    |
| character_sets_dir       | E:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | gbk_chinese_ci  |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set, 1 warning (0.00 sec)

可以看到,两个输出结果中,database 和 server 的变量中默认字符集都变成了 UTF-8。至此,MySQL 5.7 不支持中文的问题就顺利解决了。

你可能感兴趣的:(MySQL,深度学习,markdown,java)