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

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

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

show variables like ‘char%’;
在这里插入图片描述
下面的步骤来修改为utf8格式
在这里插入图片描述
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
在这里插入图片描述
一种方法使在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名字最好一样

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值