alembic的常用参数
命令和参数解释
1 .init:创建一个alembic
仓库。
2 .revision:创建一个新的版本文件。
3 .--autogenerate:自动将当前的模型修改,生成迁移脚本。
4 .-m:本次迁移做了哪些修改,用户可以指定这个参数,方便回顾。
5 .upgrade:将指定版本的迁移文件映射到数据库中,会执行版本文件中的upgrade函数。如果有多个迁移脚本没有被映射到数据库中,那么会执行多个迁移脚本。
6 .head:代表最新的迁移脚本的版本号
7 .downgrade:会执行指定版本的迁移文件中的downgrade
函数。
8 .heads:展示head指向的脚本文件版本号。
9 .history:列出所有的迁移版本及其信息。
10 .curren:展示当前数据库的版本号。
另外,当第一次执行upgrade的时候,就会给数据库中创建一个名叫alembic_version
表,这个表只会有一条数据,记录当前数据库映射的是哪个版本的迁移文件。
经典错误
1 .FAILED: Target database is not up to date.
原因:主要是head和current不相同。current落后于heads的版本。
解决办法:将current移动到head上。 alembic upgrade head。
2 .FAILED: can't locate revision identified by '.*?'
原因:数据库中存的版本号不在迁移脚本的文件中。
解决方法:删除数据库中的 alembic_vision表中的数据,重新执行alembic upgrade head。
3 .执行upgrade head
时候报某个表已经存在的错误。
- 原因:执行这个命令的时候,会执行所有的迁移脚本,因为数据库中已经存在了这个表。然后迁移脚本中又包含了创建表的代码。
- 解决办法:删除version中的所有的迁移文件。 修改迁移文件的代码