我开始了一个使用迁移系统的django 1.8项目。 事情变得一团糟,所以我从数据库中删除了迁移文件夹和表,现在我试图重建它们,但没有成功。
我有三个应用程序(3个models.py文件),这些模型完全反映了表格!
models.py
到目前为止,我发现的最佳方法是:
migrations
django_migrations
python manage.py makemigrations --empty <app>
python manage.py migrate --fake
makemigrations
django.db.utils.OperationalError: (1054, "Unknown column 'accounts_plan.max_item_size' in 'field list'")
我在这件事上花了HOURS。我如何初始化迁移,以便每次都能继续工作而不会中断迁移?
为什么这么复杂?为什么没有一个简单的单线:initiate_migrations_from_schema?
initiate_migrations_from_schema
编辑: 现在事情变得更糟了。我删节了django_migrations表并删除了所有migrations文件夹。 现在,我尝试运行python manage.py migrate --fake-initial(在DEV文档中找到的东西),只是这样就设置了Django的所有“内部”应用程序(身份验证,会话等),并且得到了: (1054, "Unknown column 'name' in 'django_content_type'")。 现在,该“列”不是真实的列。这是@propertyDjango contenttypes应用程序中定义的。这里发生了什么?为什么将name属性标识为真实列?
python manage.py migrate --fake-initial
1054, "Unknown column 'name' in 'django_content_type'"
@property
contenttypes
name
终于让它工作了,尽管我不知道为什么,但我希望它将来能工作。 经过无数次尝试并经过Django的开发站点(链接)。 这是步骤(针对遇到此问题的人员):
delete from django_migrations;
rm -rf <app>/migrations/
python manage.py makemigrations <app>
--fake-initial
现在一切正常,我可以正常使用迁移系统。
我确定我不是唯一遇到此问题的人。必须对其进行更好的记录,甚至简化。
针对Django 1.9用户的更新: 我再次使用Django 1.9.4遇到这种情况,而第5步失败。 所有我必须做的是替换--fake-initial用--fake,以使其正常工作。
--fake