【问题标题】:Flask-Migrate: alembic.util.CommandError: No such revision烧瓶迁移:alembic.util.CommandError:没有这样的修订
【发布时间】:2016-03-05 03:42:14
【问题描述】:

我已经安装了 Flask-Migration 并初始化了迁移,但是当我运行 python3 manage.py db migrate 时会收到以下错误。

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/alembic/script.py", line 104, in get_revision
raise util.CommandError("No such revision '%s'" % id_)
alembic.util.CommandError: No such revision '38340accc10'

正如Cannot complete Flask-Migration 中所建议的,一个可能的原因是我进行了升级,生成了上述修订版“38340accc10”,但随后删除了整个迁移/目录并删除了所有升级脚本。

如何删除数据库中的 Alembic 版本?我尝试使用db.drop_all()db.create_all() 重新创建数据库,但出现相同的错误。

【问题讨论】:

  • 我假设您想从头开始。摆脱数据库中可能存在的所有现有数据。如果这是真的,应该有一个数据库目录。如果你删除它并通过发出 alembic database init 命令重新开始你应该没问题。

标签: python python-3.x flask flask-sqlalchemy flask-migrate


【解决方案1】:

如果您可以生成全新的数据库,这是解决此问题的最简单方法。

首先,您需要删除数据库中的所有表,或者销毁数据库并创建一个全新的数据库。运行db.drop_all() 是不够的,因为这只会删除与模型关联的表,不会删除Alembic 表。

一旦您拥有一个完全空的数据库,您应该能够运行 ./manage.py db upgrade 将其恢复到您最近的迁移。

如果您遇到错误,则意味着您的迁移历史记录已损坏,可能是因为您删除了正在使用的迁移脚本。在这种情况下,您可以清除数据库,清除迁移目录,然后使用 ./manage.py db init 重新开始,然后使用 ./manage.py db migrate 创建与模型当前状态匹配的初始迁移。

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    相关资源
    最近更新 更多