django mysql数据迁移发生错误:django.db.utils.InternalError: (1067, "Invalid default value for 'job'")

在使用Django进行数据迁移时遇到 InternalError: (1067, "Invalid default value for 'job'") 错误。问题根源在于MySQL不支持中文默认值。解决方法包括检查MySQL的字符集设置,将其改为utf8,修改models.py中job字段的default值,如果需要,删除现有数据表后再执行迁移操作。完成这些步骤后,数据迁移成功。" 103656232,1284065,解决ServletRequest getReader()与getInputStream()只能调用一次的问题,"['Spring MVC', '过滤器', 'HttpServletRequest']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django.db.utils.InternalError: (1067, "Invalid default value for 'job'")

查看models.py里面关于job的定义,发现其default值为中文

我就觉得可能是mysql不支持中文字符的储存,在mysql客户端执行show variables like 'character%';

看看编码是否为utf8,若不是,则需要对mysql配置文件进行修改

打开配置文件:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini 

找到[client]添加default-character-set=utf8
找到[mysqld]添加character-set-server = utf8

重启mysql,在命令行先执行net stop mysql57 命令,然后执行net start mysql57 命令

(mysql57看具体的服务名称,可在任务管理器查看)

重启之后执行show variables like 'character%';

编码已改为utf8

再次执行python manage.py makemigrations

python manage.py migrate

数据迁移成功!

若在再次执行迁移时出现重复字段等错误,则需要在mysql中把相应数据表删除,再迁移!

好了,到此为止,希望对你有帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值