【发布时间】:2020-04-27 05:07:53
【问题描述】:
我正在尝试使用 flyway 修复方法从带有 spring boot 配置的模式版本控制表中删除不成功的迁移条目。我的代码是这样的;
@Bean
public FlywayMigrationStrategy repairStrategy() {
return flyway -> {
flyway.repair();
flyway.migrate();
};
}
但是运行后却抛出这样的错误(即使迁移操作被注释掉,修复操作也会失败);
Error while retrieving the list of applied migrations from Schema History table
SQL State : 72000
Error Code : 12838
Message : ORA-12838: cannot read/modify an object after modifying it in parallel
你有什么想法吗?这里有并行操作吗?顺便说一句,我正在使用 Oracle ATP 数据库和 flyway 社区版。
【问题讨论】:
-
迁移是否在事务中运行?
-
不,flyway 应该关心交易。
-
Oracle DDL 不是事务性的(与 Postgres 不同),因此 FlyWay 将永远无法回滚数据模型更改(此处修复功能派上用场)我想知道 Spring 事务管理是否会在这里产生问题,我会尝试以不同的方法(甚至可能是 bean)将 repair() 和 migrate() 分开
-
但是即使迁移操作被注释掉,修复操作也会失败,异常来自修复内部。
标签: database oracle spring-boot database-migration flyway