代码之家  ›  专栏  ›  技术社区  ›  Aymane Shuichi

Django 1.8 Syncdb与迁移

  •  7
  • Aymane Shuichi  · 技术社区  · 11 年前

    我已经创建了一个模型并执行了syncdb,它在设计模型时创建了表。
    然后我修改了模型并执行 makemigrations 它创建了迁移,忽略了syncdb已经创建的表。

    因此,我最终出现了一个错误“关系已经存在”。

    为什么makemigrations从头开始创建一切? 如何解决这种情况?

    2 回复  |  直到 11 年前
        1
  •  13
  •   Rahul Gupta    10 年前

    makemigrations 根据检测到的模型更改创建新的迁移。

    另外,需要注意的一点是 syncdb 自Django 1.7以来,该命令已被弃用,并将在Django 1.9中删除。因此,您应该使用 migrate 命令

    从…起 syncdb docs:

    自版本1.7起已弃用:
    此命令已 中已弃用 赞成 迁徙 命令 ,它同时执行旧行为 以及执行迁移。

        2
  •  2
  •   Amrendra    10 年前

    makemigration 始终创建一个具有所有更改的迁移文件。所以,当你跑步时 制造迁移 它第一次尝试查找以前的迁移文件。如果找不到,则创建一个初始迁移文件。当它试图将其应用于数据库时,它发现关系已经存在。从而引发错误。 最佳实践是,在更新模型之前,先创建一个迁移,然后修改模型。

    推荐文章