Django迁移错误表已经存在

Posted

技术标签:

【中文标题】Django迁移错误表已经存在【英文标题】:Django migration error table is already exists 【发布时间】:2019-11-17 15:18:29 【问题描述】:

    您好,我只有一个名为 001_initial 的迁移文件.....它包含我执行 makemigrations 时创建的所有 create table(sql) django makemigrations,例如 5 个表 [1,2,3,4,5]

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

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

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

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

    错误是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 表。 【参考方案1】:

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

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

【讨论】:

以上是关于Django迁移错误表已经存在的主要内容,如果未能解决你的问题,请参考以下文章

南迁移错误 - 关系已经存在

如果 Django 中已经存在某些表,如何强制迁移到数据库?

Django 迁移错误:列不存在

Django 删除了 DDBB 表,不能再迁移:没有这样的表错误

即使在运行迁移后,Django Programming 错误列也不存在

1050, "表 'dolaposcrumy_scrumygoals' 已经存在"