使用 flask-migrate 时出现 Flask 迁移错误

Flask migration error when using flask-migrate

我似乎无法 Flask 迁移我的模型。我跟着 Flask Mega-Tutorial series。在教程的数据库设置部分,我只是试图用 MySQL 替换教程中使用的 SQLite。 我按照 SQLAlchemy 的说明连接到 MySQL 数据库,并将 mysqlclient 包含在我的 pipfile 中。 但是当我 运行:

flask db init
flask db migrate

我得到以下信息:

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
ERROR [root] Error: Can't locate revision identified by '7bb962b87f19'

我试过删除迁移文件夹,我删除了环境并重新创建以查看是否可以解决任何问题。但它一直在说can't locate revision。我想也许它对数据库做了一些事情,我读过其他解决方案说你必须刷新数据库。但是,数据库中没有创建任何表或任何模式。

其他信息:

DATABASE_URL="mysql://root:mypassword@localhost/flask_tutorial"

SQLite 数据库 运行 正常并进行迁移。所以这一定是我用 mysql 设置完成的。

任何可能引导我走向正确方向的建议或想法将不胜感激。

请确认您使用过这个"SQLALCHEMY_TRACK_MODIFICATIONS= True"

你有没有安装 MySqldb 库。连接到您的 mysql 数据库 ?

会话正在存储导出的不正确的环境变量。必须完全重启我的机器才能重置设置。我什至尝试 unset 变量,但没有删除变量。一旦 Flask 能够为我的配置选择正确的变量设置,一切都按计划进行。

我遇到了同样的问题。我删除了 migrations 文件夹,但没有对 app.db 文件执行相同操作。因此,每次我尝试创建任何数据库迁移时,它都会失败,因为它使用的是旧的(并且仍然存在)app.db 文件。

我的数据库是这样配置的:

class Config(object):
    # Database configuration
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'app.db')
    SQLALCHEMY_TRACK_MODIFICATIONS = False

删除 app.db 文件解决了错误。随后的数据库迁移和升级运行良好。