请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

migrate时报错django.db.utils.OperationalError: (1366

django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xE7\\x94\\xA8\\xE6\\x88\\xB7...' for column 'name' at row 1")

正在回答 回答被采纳积分+3

2回答

小辉辉学编程 2017-09-05 19:34:44

该错误很少有人遇到,可能大家都是按照老师的环境配置来做的,但是我是在linux系统配置的环境,所以也遇到了该问题,该问题的主要原因是linux下mysql的字符集设置问题,他的utf-8编码不是实际的utf-8编码,因此遇到特殊的情况会报错。在网上找了很久发现是在数据库建库阶段,就要把编码方式指定好,同时要将所有存入数据库的字符转换成utf-8编码。以下是解决方法:

先在settings.py中添加:DEFAULT_CHARSET = 'utf-8

然后使用mysql命令行创建一个数据库,设置编码为utf8_general_ci,在写入数据前,将要写的字符串都转换为utf8:

CREATE DATABASE MxOnline DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

做完这两步后再重新运行makemigrations和migrate即可。

1 回复 有任何疑惑可以回复我~
  • bobby #1
    亲 不用这样的 课程中在新建数据库的时候 我强调过 一定要在新建数据库的时候指名utf8 如果没有指名 后期用命令修改会很麻烦, 是否你们在新建的时候没有指明utf8编码?
    回复 有任何疑惑可以回复我~ 2017-09-06 10:36:35
  • 谢谢,以解决!
    回复 有任何疑惑可以回复我~ 2019-12-30 12:33:03
bobby 2017-07-26 09:47:40

你的name这个字段是否设置的类型有问题 导致不能保存中文?

0 回复 有任何疑惑可以回复我~
  • 提问者 慕码人6221433 #1
    我自己写的model里没有定义name这个字段,继承的AbstractUser类
    回复 有任何疑惑可以回复我~ 2017-07-26 21:15:26
  • 提问者 慕码人6221433 #2
    把数据库的表都删掉后重新migrate就成功了。
    回复 有任何疑惑可以回复我~ 2017-07-26 22:02:52
  • bobby 回复 提问者 慕码人6221433 #3
    好的, 能解决问题就好
    回复 有任何疑惑可以回复我~ 2017-07-27 09:25:05
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信