Flask框架+mySQL数据库:误删migrations文件夹后再次创建时遭遇错误(Can't locate revision identified by ‘xxx’)

先说一下如何把数据库与Flask框架下的Python后台(服务器)连接起来:

1、模型初始化环境:

命令:python manage.py db init
cmd的回应:

Creating directory F:\code\flask_project\migrations ... done
Creating directory F:\code\flask_project\migrations\versions ... done
Generating F:\code\flask_project\migrations\alembic.ini ... done
Generating F:\code\flask_project\migrations\env.py ... done
Generating F:\code\flask_project\migrations\env.pyc ... done
Generating F:\code\flask_project\migrations\README ... done
Generating F:\code\flask_project\migrations\script.py.mako ... done
Please edit configuration/connection/logging settings in 'F:\\code\\flask_project\\migrations\\alembic.ini' before proceeding.

这时就可以在项目文件夹中看到子文件夹migrations


2、把表中模型映射到数据库中 先生成迁移文件

命令:python manage.py db migrate
cmd回应:

INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added table 'answer'
Generating F:\code\flask_project\migrations\versions\3007cf54a530_.py ... done

这时打开migration文件夹后再打开versions文件夹会看到形如3007cf54a530_.py文件和3007cf54a530_.cpy文件


3、再把迁移文件映射到数据库中
命令:python manage.py db upgrade
cmd回应:

INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> 3007cf54a530, empty message

以上是正常的情况
今天我手残,项目做到一半把migrations文件误删了,而且这个文件删除后是无法找回的,回收站里是找不到的
于是我重新执行步骤一,成功
执行步骤二,报错:

alembic.util.exc.CommandError: Can't locate revision identified by '68c8e45e399c'

于是就懵逼了,后来终于找到一篇相关文章
把问题解决了

我的理解是:
当把后台与数据库建立关系后,双方会分别产生一个“接口”,后台的“接口”是migrations文件夹中的versions文件夹中的文件;数据库的“接口”是这个表“alembic_version”(蒸馏器版本?什么鬼名字?)
我把migrations删除后,alembic_version没有改变。当我新建一个migrations后,两个“接口”对不上了,所以会报错:
alembic.util.exc.CommandError: Can't locate revision identified by '68c8e45e399c'

所以这种错误最简单的解决办法就是把数据库中的alembic_version表删掉,然后就可以继续后面的操作了

其他关于用alembic进行版本控制的东西我就不多说了,有兴趣的请自行百度

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值