django-关于manage.py migrate无效的问题
2017-03-04 15:23
477 查看
问题描述:
已有的model,修改之后,想重新建模,于是将migrations文件夹中除__init__.py之外其他文件都删掉,再次执行以下步骤
python manage.py makemigrations确认成功,执行
python manage.py migrate,提示
No migrations to apply.表示一脸懵逼。再次修改,指定表名,再次尝试,发现问题依旧,表示二脸懵逼
排查过程
python manage.py dbshell进到数据库里面,查看是否表已存在
结果:表不存在
检查migrations文件
结果:文件没问题
百度 google 各种搜,乱投医,各种尝试
解决方案
python manage.py dbshell进到数据库中,执行
delete from django_migrations where app='your_appname';
python manage.py makemigrations(若migrations文件未删除,可不执行这一步)
python manage.py migrate好啦,大功告成
原因分析
查看django_migrations表结构建表语句:
CREATE TABLE "django_migrations" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "app" varchar(255) NOT NULL, "name" varchar(255) NOT NULL, "applied" datetime NOT NULL);
原因
造成多次应用migrations失败的原因是,当前model是修改过的,原来的migrations已经被我删除,但是,重新生成的migrations使用递增整数记名,所以,在django_migrations表中0001,0002等前面几个数字的文件都已被记录,在Django看来,被记录了就相当于已应用,所以,会出现刚开始的
No migrations to apply.
避免方案
有强迫症删除migrations文件的同学(比如我),请同时到数据库中删除相应记录没有强迫症的同学,可以继续生成新的migrations,旧的就不必理会了
题外话
执行python manage.py migrate之后,可以使用
python manage.py sqlmigrate appname migrations_num(例如
python manage.py sqlmigrate user 0002)查看当前migrations文件对应的sql语句。
另外,在使用上述命令查看0002文件的sql语句时发现,django会新建一个表user_new,然后插入user表中的数据,再把user表删掉,再把user_new重命名为user。所以,修改model的时候,不必担心原有数据会丢失。
相关文章推荐
- Django-关于manage.py migrate无效的问题
- django 解决manage.py migrate无效的问题
- 玩django时运行python manage.py runserver时遇到问题
- python manage.py migrate 出错 django.db.utils.ProgrammingError
- 关于python django-admin.py startproject mysite不工作的问题
- 在运行envirtual环境创建项目,python manage.py migrate同步数据库问题
- django python manage.py migrate遇到的错误
- Django执行python manage.py syncdb时,出行No module named MySQLdb问题解决方法
- Django学习(1)——python manage.py startapp app-name新建app报错问题
- 使用django报错问题(python manage.py startapp app-name)
- django- migrate无效的问题
- 关于django 工程创建找不到 django-admin.py 文件问题
- 关于win7下Django无法找到manage.py
- 【Django2.0】python manage.py makemigrations 和 python manage.py migrate的区别
- 关于python2.7.6+django1.4.2的admin样式无效问题记录
- Django manage.py sunserver 编码问题记录和解决方法!
- 关于VC2005 断点无效的问题
- 关于VC2005 断点无效的问题
- 关于在WindowsXp 环境下Python2.6 + web.py 构建WEB开发环境遇到的问题
- 关于水晶报表分页无效问题