Django - 删除迁移文件后的 OperationalError

问题描述

在我系统的早期,在我知道如何使用 django 的内置用户模型之前,我有我自己的名为 myUser 的类,我打算将它用于相同的目的。我最终删除了这个,而是使用了 django 的用户模型。一切都很好。然后我尝试将所有自定义模型的 id 更改为 UUIDField,但语法错误,不幸的是,我在运行 makemigrations 和 migrate 后才意识到这一点。我更正了它,但仍然存在一个错误,因为错误语法的 UUIDField 的迁移文件仍然在迁移中徘徊。无论如何,这就是我从谷歌搜索中了解到的。因为我不确定哪个迁移文件导致了错误,我只是删除了最后 5 个迁移文件(事后看来,这不是我曾经拥有的最好的主意)。不幸的是,其中一个迁移文件涵盖了 myUser 模型的删除

现在,每当我尝试迁移时,都会收到以下错误

django.db.utils.OperationalError: 没有这样的表:phoneBook_myUser

似乎此错误正在阻止我进行任何 的新迁移。我已经用谷歌搜索了一段时间,似乎我的两个选择是深入研究 django 细节并尝试搞砸直到我修复它 - 我希望避免这种情况,因为我只使用了 Django 2周 - 或者重置所有内容并从头开始构建系统。这也不太理想。

我有一个 myUser 模型的备份版本。是恢复它,迁移,删除它然后迁移“安全”还是会造成更大的混乱?我可以采取任何其他措施来解决此问题吗?

更新: 来自 python manage.py showmigrations 的结果:

    admin
     [X] 0001_initial
     [X] 0002_logentry_remove_auto_add
     [X] 0003_logentry_add_action_flag_choices
    auth
     [X] 0001_initial
     [X] 0002_alter_permission_name_max_length
     [X] 0003_alter_user_email_max_length
     [X] 0004_alter_user_username_opts
     [X] 0005_alter_user_last_login_null
     [X] 0006_require_contenttypes_0002
     [X] 0007_alter_validators_add_error_messages
     [X] 0008_alter_user_username_max_length
     [X] 0009_alter_user_last_name_max_length
     [X] 0010_alter_group_name_max_length
     [X] 0011_update_proxy_permissions
     [X] 0012_alter_user_first_name_max_length
    contenttypes
     [X] 0001_initial
     [X] 0002_remove_content_type_name
    phoneBook
     [X] 0001_initial
     [X] 0002_auto_20210707_1306
     [X] 0003_informationrating_owner_ownerset_comments_connection/
         _numberMetadata_source
     [X] 0004_rename_comments_comment
     [X] 0005_auto_20210707_1632
     [X] 0006_auto_20210707_1634
     [X] 0007_auto_20210707_1637
     [X] 0008_alter_company_company_type
     [X] 0009_owner_owner_type
     [X] 0010_numberMetadata_published_at
     [X] 0011_auto_20210713_0957
     [X] 0012_auto_20210713_1014
     [X] 0013_connectionrating
     [X] 0014_informationrating
     [X] 0015_delete_informationrating
     [X] 0016_alter_owner_owner_type
     [X] 0017_alter_owner_owner_type
     [X] 0018_auto_20210713_1349
     [X] 0019_auto_20210713_1525
     [X] 0020_auto_20210713_1529
     [X] 0021_auto_20210713_1533
     [X] 0022_auto_20210713_1535
     [X] 0023_alter_numberMetadata_owner_set_id
     [X] 0024_auto_20210719_0948
     [X] 0025_auto_20210719_1555
     [ ] 0026_auto_20210720_1528
     [ ] 0027_connection_connection_status
    sessions
     [X] 0001_initial

我的迁移文件

    0001_initial.py
    0002_auto_20210707_1306.py
    0003_informationrating_owner_ownerset_comments_connection/
    _numberMetadata_source.py
    0004_rename_comments_comment.py
    0005_auto_20210707_1632.py
    0006_auto_20210707_1634.py
    0007_auto_20210707_1637.py
    0008_alter_company_company_type.py
    0009_owner_owner_type.py
    0010_numberMetadata_published_at.py
    0011_auto_20210713_0957.py
    0012_auto_20210713_1014.py
    0013_connectionrating.py
    0014_informationrating.py
    0015_delete_informationrating.py
    0016_alter_owner_owner_type.py
    0017_alter_owner_owner_type.py
    0018_auto_20210713_1349.py
    0019_auto_20210713_1525.py
    0020_auto_20210713_1529.py
    0021_auto_20210713_1533.py
    0022_auto_20210713_1535.py
    0023_alter_numberMetadata_owner_set_id.py
    0024_auto_20210719_0948.py
    0025_auto_20210719_1555.py
    0026_auto_20210720_1528.py
    0027_connection_connection_status.py
    __init__.py

解决方法

我最终创建了项目的新版本,所有文件的完美副本,但使用了新数据库,一切正常。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...