django之manage.py migrate无效的问题
问题
已有的model,迁移之后,想重新设置字段,于是将migrations文件夹中除__init__.py之外其他文件都删掉,并且把数据库中的表删除,再次执行以下步骤python manage.py makemigrations确认成功,执行python manage.py migrate,提示No migrations to apply.无法对表模型进行更改。
解决方案
python manage.py dbshell进到数据库中,执行delete from django_migrations where app='your_appname';python manage.py makemigrationspython manage.py migrate好啦,大功告成
扩展
执行python manage.py migrate之后,可以使用python manage.py sqlmigrate appname migrations_num(例如python manage.py sqlmigrate user 0001)查看当前migrations文件对应的sql语句。
另外,在使用上述命令查看0001文件的sql语句时发现,Django会新建一个表user_new,然后插入user表中的数据,再把user表删掉,再把user_new重命名为user。所以,修改model的时候,不必担心原有数据会丢失。

浙公网安备 33010602011771号