flyway命令行工具 - 重新执行失败的DDL的选项是什么?

时间:2011-08-18 14:50:47

标签: java oracle flyway ora-00955

我使用create table DDL成功运行了v1迁移。我将其复制到v2文件并运行 - 得到了预期的验证错误消息:

  

迁移到1.0.002版       com.googlecode.flyway.core.exception.FlywayException:执行语句时出错       在第1行:创建表人(id号(10)主键,名称varchar2(301))       由java.sql.SQLSyntaxErrorException引起:ORA-00955:名称已被a使用       n现有对象       MigrationException:迁移到版本1.0.002失败!请恢复备份       并回滚数据库和代码

我更正了v2文件并再次运行了flyway migrate。提供错误消息

  

当前架构版本:1.0.002       MigrationException:迁移到版本1.0.002失败!请恢复备份       并回滚数据库和代码

我不在进行数据库备份的阶段 - 简单地尝试执行固定的DDL。我目前没有看到没有飞路清洁的解决方案。为什么flyway不能尝试再次执行FAILED版本(如果校验和已更改)?或者不应该有flyway rollback命令?

我知道我可以很好地修改代码来实现这一目标,但有没有理由为什么选择它来表现这种方式呢?

1 个答案:

答案 0 :(得分:2)

简单地重新执行的问题是可能已经应用了一些更改,这将导致迁移到失败

有两种解决方案:

  • 使用支持 DDL事务的数据库,例如PostgreSQL,SQLServer或DB2
  • 在重新应用之前,对修改后的结构和元数据表执行手动清理