【问题标题】:Django migration error table is already existsDjango迁移错误表已经存在
【发布时间】:2019-11-17 15:18:29
【问题描述】:
  1. 您好,我只有一个名为 001_initial 的迁移文件.....它包含我执行 makemigrations 时创建的所有 create table(sql) django makemigrations,例如 5 个表 [1,2,3,4,5]

  2. 我的数据库中已经有 first(1),例如 1,

  3. 所以我需要迁移表,例如 2,3,4,5

  4. 但是当我执行 python manage.py migrate 时出现错误,错误是表 1(1) 已创建,而表 2、3、4、5 未在数据库中创建,因为此错误

  5. 我只有一个迁移文件,我删除了 django_migration 文件数据

  6. 错误是django.db.utils.OperationalError: (1050, "Table 'sfff_tyu' already exists")

那怎么办?

【问题讨论】:

  • 你能详细分享你的迁移文件和你得到的异常吗?
  • 您不能进行一半已迁移而另一半未迁移的迁移。如果要运行此程序,请将迁移分为两个文件。首先应该包含已经迁移的迁移。你应该伪造它,第二个应该包含必须迁移的迁移。
  • @cagrias 它的正常迁移文件我创建了 5 个模型,一个迁移文件包含来自 python manage.py makemigrations 的所有 5 个表查询
  • @MuhammadHassan 表示表 1 查询放在主 0001 初始文件中,而剩下的 4 表查询在 001 _initial_file 上创建新的第二次迁移。第一个迁移文件伪造它第二个迁移文件迁移?
  • @madukp 是的,因为 django 只记录执行了哪些迁移,哪些没有执行。检查数据库中的 django_migrations 表。

标签: django django-rest-framework


【解决方案1】:

如果您不想丢失第一个表中的数据,可以按照以下步骤操作:

  1. 打开 0001 迁移文件并删除表 2、3、4、5(except 表 1)的创建表命令。 (复制该文件以防万一不顺利)
  2. 运行命令python manage.py makemigrations {your_app_name}。 (这将创建一个迁移文件 0002,其中包含对表 2、3、4、5 的创建表查询。
  3. 运行python manage.py migrate {your_app_name}

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 2015-04-28
    • 2011-03-31
    • 2021-01-09
    • 2018-04-07
    • 2014-11-13
    • 2013-02-04
    • 1970-01-01
    • 2020-03-03
    相关资源
    最近更新 更多