django 迁移地狱,掉落了 table。试图取回它
django migration hell, dropped a table. Tried to get it back
所以我在我的数据库中删除了一个 table,我想要它回来。重新运行迁移出现错误 table 不存在。经过一番搜索后,我了解到我可以删除 django_migrations 中所有应用名称为 my app 的内容。所以我这样做了,重新运行它开始工作的迁移然后抱怨 table 没有被删除。
我不知道如何把那个 table 重新找回来并保持一切原样...无论如何要做到这一点?
我不关心数据库中90%的数据,只关心少数table和字段。我丢弃的 table 我不关心数据。
您可以使用 sqlmigrate 命令打印 Django 将执行的 SQL 命令。然后您可以选择重新创建您删除的表所需的命令并手动应用它们。
一旦所有表再次就位,您可以使用 migrate <app_name> --fake
转发迁移历史记录,这样 Django 就知道应用程序中的迁移已应用。
首先检查 django_migrations
table。它包含关于哪些迁移已经 运行 的数据。将此数据与实际迁移文件进行比较,以了解哪些文件具有 运行 或没有。
最后,不要害怕删除 django_migrations
中的行并修改您的原始迁移文件以重新创建您需要的 table。
所以我在我的数据库中删除了一个 table,我想要它回来。重新运行迁移出现错误 table 不存在。经过一番搜索后,我了解到我可以删除 django_migrations 中所有应用名称为 my app 的内容。所以我这样做了,重新运行它开始工作的迁移然后抱怨 table 没有被删除。
我不知道如何把那个 table 重新找回来并保持一切原样...无论如何要做到这一点?
我不关心数据库中90%的数据,只关心少数table和字段。我丢弃的 table 我不关心数据。
您可以使用 sqlmigrate 命令打印 Django 将执行的 SQL 命令。然后您可以选择重新创建您删除的表所需的命令并手动应用它们。
一旦所有表再次就位,您可以使用 migrate <app_name> --fake
转发迁移历史记录,这样 Django 就知道应用程序中的迁移已应用。
首先检查 django_migrations
table。它包含关于哪些迁移已经 运行 的数据。将此数据与实际迁移文件进行比较,以了解哪些文件具有 运行 或没有。
最后,不要害怕删除 django_migrations
中的行并修改您的原始迁移文件以重新创建您需要的 table。