gpt4 book ai didi

Django 1.8 : Create initial migrations for existing schema

转载 作者:行者123 更新时间:2023-11-28 19:33:18 26 4
gpt4 key购买 nike

我启动了一个 django 1.8 项目,它使用了迁移系统。
不知何故,事情变得一团糟,所以我从数据库中删除了迁移文件夹和表,现在我试图重建它们,但没有成功。

我有三个应用程序(3 个 models.py 个文件),模型完全反射(reflect)了表格!

目前我发现的最佳方法是:

  1. 删除所有migrations文件夹。完成!
  2. 删除 django_migrations 中的所有内容 table 。完成!
  3. 运行 python manage.py makemigrations --empty <app>对于每个应用程序。完成!
  4. 运行 python manage.py migrate --fake .完毕! (虽然它只有在我在每个 makemigrations 命令后运行它时才有效。

现在我添加一个新字段,运行 makemigrations命令,我收到以下错误:
django.db.utils.OperationalError: (1054, "Unknown column 'accounts_plan.max_item_size' in 'field list'")

我已经为这件事耗费了数小时。我怎么能初始化迁移,这样我就可以继续工作而不会每次都中断迁移?

为什么这么复杂?为什么没有简单的一行:initiate_migrations_from_schema

编辑:
现在事情变得更糟了。我截断了 django_migrations表并删除所有 migrations文件夹。
现在我尝试运行 python manage.py migrate --fake-initial (我在 DEV 文档中找到的东西),它设置了 Django 的所有“内部”应用程序(身份验证、 session 等),我得到:
(1054, "Unknown column 'name' in 'django_content_type'") .
现在,这个“专栏”不是真正的专栏。这是一个@property在 Django 的 contenttypes 中定义应用程序。这里发生了什么?为什么它识别 name属性作为一个真正的列?

最佳答案

终于让它工作了,虽然我不知道为什么,但我希望它能在未来工作。
在进行了大量试验并浏览 Django 的开发站点 ( link ) 之后。
以下是步骤(适用于遇到此问题的任何人):

  1. 清空 django_migrations表:delete from django_migrations;
  2. 对于每个应用,删除其 migrations文件夹:rm -rf <app>/migrations/
  3. 重置“内置”应用程序的迁移:python manage.py migrate --fake
  4. 对于每个应用程序运行:python manage.py makemigrations <app> .处理依赖关系(具有 ForeignKey 的模型应该在其父模型之后运行)。
  5. 最后:python manage.py migrate --fake-initial

之后,我运行了最后一个没有 --fake-initial 的命令标志,只是为了确保。

现在一切正常,我可以正常使用迁移系统了。

我敢肯定我不是唯一遇到此问题的人。必须更好地记录它,甚至简化它。

针对 Django 1.9 用户的更新:
我用 Django 1.9.4 再次遇到这种情况,第 5 步失败。
我所要做的就是替换 --fake-initial--fake使其发挥作用。

关于 Django 1.8 : Create initial migrations for existing schema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29888046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com