使用flask-migrate

时间:2019-11-19 13:32:04

标签: mysql flask sqlalchemy flask-migrate

我似乎无法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安装程序完成的操作。

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

4 个答案:

答案 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 文件解决了错误。随后的数据库迁移和升级运行良好。