[Django] MySQL设置utf8格式及migrate出现1366错误的总结

时间:2024-03-19 14:18:14

由于MySQL中一些配置没有默认设置为utf8时可能发生一些错误,下面是个人的一些总结,以供参考。

1.查看默认格式
在MySQL中输入以下命令

show variables like ‘char%’;
[Django] MySQL设置utf8格式及migrate出现1366错误的总结
下面的步骤来修改为utf8格式
[Django] MySQL设置utf8格式及migrate出现1366错误的总结
2.修改格式

打开my.ini文件(比如我的在 C:\ProgramData\MySQL\MySQL Server 5.7 )

添加或修改

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

如果这里之后,你的默认格式已经设为上图utf8,就算成功了。事实上,稍后你查看 show variables like ‘char%’; 后
character_set_database
character_set_server
可能还是 latin1
[Django] MySQL设置utf8格式及migrate出现1366错误的总结
一种方法使在MySQL中使用下面命令手动设置

set character_set_database=utf8;
set character_set_server=utf8;

3.Django中migrate出现1366错误

django.db.utils.InternalError: (1366, “Incorrect string value: ‘\xE7\x94\xA8\xE6\x88\xB7’ for column ‘name’ at row 1”)

出现这种错误是因为在未完成修改为utf8格式时就已经创建了数据库

解决策略:
1.备份原数据库数据
2.drop 旧db
3.drop 新db
4.迁移数据库
提示:旧db和新db名字最好一样