【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 打开。

image-20220325201946739

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

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

保存后即可关闭该文件。

步骤3:重启服务

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

image-20220325202007841

步骤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 不支持中文的问题就顺利解决了。

  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡皮巴拉不躺平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值