【问题标题】:Flyway sort sql files with java classFlyway使用java类对sql文件进行排序
【发布时间】:2020-04-05 00:36:06
【问题描述】:
  1. 之前,我们添加了:V1__XX.sql、V2__YY.sql 和V19_ZZ.sql Flyway 应用的 sql 文件。

  2. 然后我们引入了一个 Java 迁移类,命名为:V20_JJ.java。

  3. 现在,当我们添加 V21_NN.sql 时,我们会得到 Detected resolved migration not applied to database 错误。

是否可以按名称将 java 和 sql 迁移全部排序?

(除非万不得已,否则我们不希望使用 ignore missing migrations 或 out of order 功能)

【问题讨论】:

  • 据我了解,V21_NN.sql 不适用,不是吗?你能检查一下 V20 迁移是如何命名的吗?版本分隔符应类似于“__”。为什么使用“src/main/java/db.migration”而不是“src/main/java/db/migration”?

标签: java spring flyway


【解决方案1】:

您能解释一下为什么会出现错误吗?如果您已经应用了迁移V1、V2...V20,则在添加迁移V21 时不应出现错误,因为它按顺序并且没有错过。

可能只是你的V21_NN.sql不正确。

【讨论】:

  • 我猜flyway首先运行sql文件(v1,v2,..v19,v21),然后是java(v20)。这是错误:Validate failed: Detected resolved migration not applied to database: 20
  • @cek 这很奇怪。混合使用 java 和 sql 迁移应该开箱即用,并且顺序正确。难道是当时java migration was not compiled被应用了V21?
  • 不,java迁移位于src/main/java/db.migration下
  • 好吧,无论如何,如果你删除 V20 并尝试添加 V22_something.java 和 V23_something.sql 它应该可以正常工作......在这种情况下,我建议只清除你的开发数据库,​​如果V21 从未投入生产。或者将V20 重命名为V22(必要时进行一些更改),因为数据库迁移应该是“仅追加”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 2010-11-26
  • 2019-03-15
相关资源
最近更新 更多