解决Django误删数据库和migrations文件夹后报No changes detected

起因

向Django数据库的表中插入中文字符后,报1366错误;经验丰富的我马上就开始修改数据库的配置文件(vim /etc/my.cnf)
添加下列内容:

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

在这里插入图片描述
重启数据库

service mysqld restart

重新插入中文,发现还是报1366错误
在这里插入图片描述

问题出现

抓狂之下就删除了Django原数据库及数据库相关的文件夹migrations(小项目,刚开始),新建数据库,重新变更执行提示 :

python3 manage.py makemigrations 
python3 manage.py migrate

No changes detected
始终无法添加表结构,也没有migrations目录生成

解决方法

1. 先 python manage.py makemigrations --empty your_appname
生成一个空的initial.py
2. 再 python manage.py makemigrations
生成原先的model对应的migration file
3. 最后 python3 manage.py migrate 再次执行

总结

在执行
python3 manage.py makemigrations
python3 manage.py migrate
操作的时候,会检测你migrations目录下的0001_initial.py对应的模型脚本,如果没有该脚本就会出现No changes detected错误

扩展

还有一种情况也会出现这种错误,就是你在其他平台删除对应的Django业务数据表后(非ORM方式),执行python3 manage.py makemigrations

解决:进入数据库执行以下命令后,再重新变更提交
delete from django_migrations where app=‘yourappname’;

发布了26 篇原创文章 · 获赞 8 · 访问量 7822

猜你喜欢

转载自blog.csdn.net/qq_35289736/article/details/103352779