【问题标题】:Schema Migration after dropping table删除表后的架构迁移
【发布时间】:2014-08-23 12:56:14
【问题描述】:

我在models.py 中添加了一个专栏,这给我带来了问题。在尝试解决问题的过程中,我做了几件事。

  1. 丢了桌子./manage.py sqlclear app | ./manage.py dbshell
  2. 尝试“重置”架构./manage.py schemamigration app --initial
  3. 尝试迁移./manage.py migrate app

做完所有这些事情后,我在尝试迁移后收到此错误:

FATAL ERROR - The following SQL query failed: CREATE TABLE "projects_project" ("id" integer NOT NULL PRIMARY KEY)
The error was: table "projects_project" already exists

问题:如何修复我的数据库?我不关心数据库中的任何数据。

编辑:

其中一个相关帖子将我带到此链接Django South - table already exists。显然,如果您伪造迁移,一切都很好。

./manage.py migrate myapp --fake

我仍然不确定这样做的所有后果,但我想这就是文档的用途。

【问题讨论】:

    标签: python django django-south


    【解决方案1】:

    嗯,错误指出得很清楚:

    table "projects_project" already exists
    

    您可以快速而肮脏的方式来做这件事,然后放下桌子。在这种情况下,登录您的 DMBS。如果是 MySQL,您只需打开终端并输入:

    mysql -u root -p YOURPASSWORD
    

    然后选择数据库:

    use your_database;
    

    最后,放下桌子:

    DROP TABLE projects_project;
    

    您现在应该可以迁移了。 优雅的方法是撤消迁移。但是每个框架都有自己的方式来做到这一点。您需要先弄清楚这一点 - 或向我们提供更多信息。

    【讨论】:

    • 我正在使用 SQLite。 ./manage.py sqlclear 就像你说的那样。它丢弃了桌子。我放下它们,确认它们不存在,然后继续进行第二步。我编辑了我的帖子。显然,伪造迁移解决了这个问题。我不知道为什么,但这就是文档的用途。感谢您的回答!当我再次使用 MySQL 时,它会很方便。
    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多