【发布时间】:2020-03-15 01:05:31
【问题描述】:
我似乎无法让Flask 迁移我的模型。我正在关注Flask Mega-Tutorial series。在本教程的数据库设置部分,我只是想用MySQL 替换本教程中使用的SQLite。
我按照SQLAlchemy 的说明连接到MySQL 数据库,并在我的pipfile 中包含mysqlclient。
但是当我运行时:
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 设置所做的事情。
任何可能引导我走向正确方向的建议或想法将不胜感激。
【问题讨论】:
-
当你“删除环境”时是否也删除了数据库中的迁移表?
-
不幸的是,从未创建过表格。
-
Alembic 在您第一次运行
flask db init时会创建一个名为alembic_version的表。如果该表在您的数据库中(很可能是),您将需要删除该表并再次尝试初始化。 -
不幸的是没有。希望是这样我可以删除它。
-
Flask-Migrate 的输出表明应用仍然认为它是为 SQLite 配置的。你注意到了吗?第一行写着
Context impl SQLiteImpl。您需要调查为什么您所做的配置更改没有生效。
标签: mysql flask sqlalchemy flask-migrate