问题

在使用flask-sqlalchemy做数据迁移时报错

> 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 '96a9717b0703'

解决

报错的原因可能是数据库版本不对,可能是更换了 migrations 文件,但是仍旧使用的是原来的数据库表。 可以尝试如下方式(先做好原数据库备份):

  • 删除 migrations 文件夹 + 数据库表中的 alembic_version 表,重新初始化数据库并更新;

  • 删除整个数据库表,之后便可以直接进行数据库初始化更新操作

我在尝试了第一种方式之后失败了,之后我采用的是第二中方式

> flask db initdb --drop   

删除原有数据库重新创建,让后慢慢将原来数据倒入到新数据库中