我似乎无法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'
我尝试删除了migrations文件夹,并且删除了环境,然后重新创建以查看是否可以解决任何问题。但是它一直在说can't locate revision
。我以为可能它对数据库做了些什么,我已经阅读了其他解决方案,说您必须刷新数据库。但是,数据库中没有创建任何表或任何模式。
其他信息:
DATABASE_URL="mysql://root:mypassword@localhost/flask_tutorial"
SQLite
数据库可以正常运行并进行迁移。因此,这一定是我使用mysql安装程序完成的操作。
任何可能引导我朝正确方向发展的建议或想法,将不胜感激。
答案 0 :(得分:1)
该会话存储了不正确导出的环境变量。必须完全重启我的机器才能重置设置。我什至尝试使用unset
来获取变量,但并没有删除变量。一旦Flask能够为我的配置选择正确的变量设置,一切都会按计划进行。
答案 1 :(得分:0)
请确保您已使用此“ SQLALCHEMY_TRACK_MODIFICATIONS = True”
答案 2 :(得分:0)
您是否安装了MySqldb lib。连接到您的mysql数据库?
答案 3 :(得分:0)
我遇到了同样的问题。我删除了 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
文件解决了错误。随后的数据库迁移和升级运行良好。