一、flask迁移数据库
1. flask迁移数据库过程:
1. python3 run.py db init
作用:做一些项目和数据库的初始化操作
特点:一个项目中init只执行一次即可
2.python3 run.py db migrate
作用:将编辑好的实体类生成中间文件并保存在migrations文件夹中
特点:只有检测到实体类有更改的时候,才会生成中间文件
3.python3 run.py db upgrade
作用:将中间文件映射回数据库
2. 错误如下
ERROR [root] Error: Can't locate revision identified by '85f87f20772b'
3. 错误产生的背景
我新建了一个项目,在该项目中创建了一些实体类,连接的数据库是另外一个新的数据库。然后,执行【python3 run.py db init】【python3 run.py db migrate】
4. 错误产生的原因
执行【python3 run.py db init】命令后,不但会在程序所在目录下生成一个migrations文件夹,还会在数据库里生成一个名为alembic_version的数据库表,如果alembic_version数据库和migrations文件夹不是对应的,就会报错。
二、解决方案
1. 使用新的数据库进行初始化迁移数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost:3306/blog_new' #换个数据库
2. 删除数据表alembic_version中的记录,再执行【python3 run.py db init】【python3 run.py db migrate】【python3 run.py upgrade】进行数据库迁移