Django - 删除迁移文件后的操作错误
Django - OperationalError after deleting migration files
在我系统的早期,在我知道如何使用 django 的内置用户模型之前,我有自己的 class 命名为 myUser,我打算将其用于相同的目的。我最终删除了这个,而是使用了 django 的用户模型。有一段时间一切都很好。然后我尝试将所有自定义模型的 ID 更改为 UUIDField,但语法错误,不幸的是,我是在 运行 makemigrations 和 migrate 之后才意识到的。我更正了它,但仍然存在错误,因为语法错误的 UUIDField 的迁移文件仍然在迁移中徘徊。无论如何,这就是我从谷歌搜索中了解到的。因为我不确定 哪个 迁移文件导致了错误,所以我只是删除了最后 5 个迁移文件(事后看来,这不是我曾经有过的最好的主意)。不幸的是,这些迁移文件之一是包含删除 myUser 模型的文件。
现在,每当我尝试迁移时,都会收到以下错误:
django.db.utils.OperationalError: 没有这样的 table: phoneBook_myUser
似乎这个错误正在阻止我的 任何 新迁移。我在谷歌上搜索了一段时间,看来我的两个选择是要么深入研究 Django 的细节,要么尝试弄乱直到我修复它——我希望避免这种情况,考虑到我只使用 Django 2几周-或重置所有内容并从头开始构建系统。那也不太理想。
我有 myUSer 模型的备份版本。是恢复它、迁移、删除它然后迁移 'safe' 还是会把事情搞得一团糟?我可以采取任何其他措施来解决此问题吗?
更新:
结果来自 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
我最终创建了项目的新版本,所有文件的完美副本,但使用新数据库,一切正常。
在我系统的早期,在我知道如何使用 django 的内置用户模型之前,我有自己的 class 命名为 myUser,我打算将其用于相同的目的。我最终删除了这个,而是使用了 django 的用户模型。有一段时间一切都很好。然后我尝试将所有自定义模型的 ID 更改为 UUIDField,但语法错误,不幸的是,我是在 运行 makemigrations 和 migrate 之后才意识到的。我更正了它,但仍然存在错误,因为语法错误的 UUIDField 的迁移文件仍然在迁移中徘徊。无论如何,这就是我从谷歌搜索中了解到的。因为我不确定 哪个 迁移文件导致了错误,所以我只是删除了最后 5 个迁移文件(事后看来,这不是我曾经有过的最好的主意)。不幸的是,这些迁移文件之一是包含删除 myUser 模型的文件。
现在,每当我尝试迁移时,都会收到以下错误:
django.db.utils.OperationalError: 没有这样的 table: phoneBook_myUser
似乎这个错误正在阻止我的 任何 新迁移。我在谷歌上搜索了一段时间,看来我的两个选择是要么深入研究 Django 的细节,要么尝试弄乱直到我修复它——我希望避免这种情况,考虑到我只使用 Django 2几周-或重置所有内容并从头开始构建系统。那也不太理想。
我有 myUSer 模型的备份版本。是恢复它、迁移、删除它然后迁移 'safe' 还是会把事情搞得一团糟?我可以采取任何其他措施来解决此问题吗?
更新: 结果来自 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
我最终创建了项目的新版本,所有文件的完美副本,但使用新数据库,一切正常。