Windows下修改MySQL5.7数据库默认编码格式问题

由于项目需求,在开发环境下安装了MySQL5.7作为本地的数据库工具。Windows下MySQL数据库插入中文的时候遇到如下问题:

Incorrect string value: '\xE9_' for column 'UserName' at row 1

检查发现是写入的数据是用utf-8格式进行编码的中文内容,与MySQL的默认编码方式不符导致的。
在控制台中登录MySQL,输入:

SHOW VARIABLES LIKE "%char%";

可以查看MySQL使用的编码格式字符集,结果为:
在这里插入图片描述
可以看到图中的各种字符集的编码方式并不一致,为了解决我这里的中文编码冲突问题,需要将所有的编码方式改为utf-8格式。接下来就是踩坑的地方了:

在MySQL安装文件夹下(我的例子为C:\Program Files\MySQL\MySQL Server 5.7\)编辑my.ini文件(如果没有该文件,但是有一个my_default.ini的文件的话,可以复制default文件并重命名为my.ini;如果default也没有,可以直接创建该文件),在文件中修改/添加下面的内容:

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8

修改后重启MySQL服务(计算机右键->管理->服务,找到MySQL服务点击重启动),使得修改生效。
坑来了:
修改了上述文件后,再次登录MySQL输入

SHOW VARIABLES LIKE "%char%";

发现其中的一部分变成了utf8,但是还有一部分没有修改成功。
解决方法
找到C:\ProgramData\MySQL\MySQL Server 5.7,这下面还有一个my.ini,同样对这个文件做上述修改,保存并重启MySQL服务。
再次查看,发现问题解决。
(如果还有部分没有修改,在上述的文件中增加一条

[mysql]
default-character-set=utf8

对修改默认编码前的数据库,只修改配置文件无法影响到,将该库删掉重新建立,或者采用下面的指令:

alter database 你的数据库名字 character set utf8; 

就可以修改当前数据库的编码格式了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 为了把 MySQL 5.7 数据库的编码改为 UTF8MB4 和 UTF8MB4_General_ci,您可以执行以下步骤: 1. 备份数据库:在进行任何更改之前,请务必备份您的数据库以防止任何数据丢失。 2. 确定当前编码:使用以下语句检查数据库当前的编码: ``` SHOW VARIABLES LIKE 'character_set_database'; ``` 3. 修改数据库编码:使用以下语句更改数据库编码: ``` ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 4. 修改表编码:对于每一个表,您需要使用以下语句修改表的编码: ``` ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_General_ci; ``` 5. 修改列编码:对于每一列,您需要使用以下语句修改列的编码: ``` ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_General_ci; ``` 请注意,您需要根据您的数据库结构进行相应的修改。这些步骤可以帮助您将 MySQL 5.7 数据库的编码更改为 UTF8MB4 和 UTF8MB4_General_ci。 ### 回答2: 要把MySQL 5.7中当前数据库的编码改为utf8mb4 utf8mb4_general_ci,可以按以下步骤进行: 1. 登录MySQL客户端或者使用MySQL图形界面工具连接到数据库服务器。 2. 使用以下命令查看当前数据库的编码: ```sql SHOW VARIABLES LIKE 'character_set_database'; ``` 3. 如果当前数据库的编码不是utf8mb4,请继续执行以下步骤。 a. 首先,备份数据库以防止数据丢失。 b. 使用以下命令修改当前数据库的编码为utf8mb4: ```sql ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci; ``` 其中,`database_name`是要修改编码的数据库的名称。 4. 使用以下命令查看所有表的编码: ```sql SELECT table_name, table_collation FROM information_schema.tables WHERE table_schema = 'database_name'; ``` 其中,`database_name`是要修改编码的数据库的名称。 5. 如果某些表的编码不是utf8mb4,请继续执行以下步骤。 a. 首先,备份相关表以防止数据丢失。 b. 对于每个需要修改编码的表,使用以下命令修改表的编码为utf8mb4: ```sql ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 其中,`table_name`是要修改编码的表的名称。 6. 完成以上步骤后,再次使用以下命令查看所有表的编码,确认所有表的编码都已经修改为utf8mb4: ```sql SELECT table_name, table_collation FROM information_schema.tables WHERE table_schema = 'database_name'; ``` 其中,`database_name`是要修改编码的数据库的名称。 通过以上步骤,您可以将MySQL 5.7中当前数据库的编码全部改为utf8mb4 utf8mb4_general_ci。记得在执行任何数据库操作前,进行备份以防止数据丢失。 ### 回答3: 在MySQL 5.7中将当前数据库所有编码更改为utf8mb4 utf8mb4_general_ci的步骤如下: 1. 在MySQL命令行或客户端中登录到数据库服务器。 2. 选择要更改编码的数据库,可以使用以下命令切换到目标数据库: ``` USE your_database_name; ``` 3. 在更改编码之前,首先备份数据库以防止数据丢失。 4. 为了确保兼容性,在更改编码之前需要确保所有的表和列都使用UTF-8编码。可以使用以下命令检查表和列的编码: ``` SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'your_database_name' AND CHARACTER_SET_NAME != 'utf8mb4'; ``` 5. 对于返回的每个表和列,使用ALTER TABLE语句将其编码更改为utf8mb4 utf8mb4_general_ci。例如,要更改名为table1的表的编码,可以使用以下命令: ``` ALTER TABLE table1 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 6. 重复步骤5,直到所有表和列的编码都已更改。 7. 检查所有视图和存储过程,并确保它们适应新的编码。如果有必要,进行相应的更改。 8. 最后,将数据库默认编码更改为utf8mb4。可以通过编辑MySQL配置文件(my.cnf或my.ini)并添加以下行来实现: ``` [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server=utf8mb4 collation-server=utf8mb4_general_ci ``` 9. 重启MySQL服务器以使更改生效。 完成以上步骤后,你的数据库中的所有表和列都将编码为utf8mb4 utf8mb4_general_ci。请注意,更改数据库编码会影响数据存储和排序,因此在更改编码之前请务必备份数据库并确保所有表和列都适应新编码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值