作者:倾城不了倾了你 | 来源:互联网 | 2022-12-09 13:50
有时候alembic upgrade head
,即使在测试数据库上运行正常,有时也可能无法在生产数据库上运行。例如,迁移可能会向我的测试环境中NOT NULL
以前不包含NULL
,但在生产环境中确实包含NULL
的列添加约束。
在计划部署时,最好能够在运行迁移之前检查其是否可以干净地应用。对于不支持事务性DDL(在事务中进行模式更改)的数据库(如MySQL),这是不可能的,但在原则上,对于支持事务性DDL的数据库(如PostgreSQL )应该是可行的。Alembic可以尝试在事务中执行升级,然后回滚。
Alembic是否对此类功能有任何支持?如果没有,是否有一些技巧可以实现?