flyway 3.1迁移校验和不匹配。校验和的计算取决于平台

时间:2015-03-13 22:52:54

标签: java linux database flyway

我在windows和ubuntu客户端,开发平台上都有一个完全相同的项目源和sql脚本。 当我编译并尝试在我的linux服务器上部署项目时,我只收到了我的linux版本包的这个例外。

引起:org.flywaydb.core.api.FlywayException:验证失败。发现应用迁移与可用迁移之间存在差异:迁移校验和不匹配迁移V2__xxx_module.sql:DB = -1434535307,Classpath = -282428834     在org.flywaydb.core.Flyway.doValidate(Flyway.java:1020)     在org.flywaydb.core.Flyway.access $ 300(Flyway.java:52)     在org.flywaydb.core.Flyway $ 1.execute(Flyway.java:925)     在org.flywaydb.core.Flyway $ 1.execute(Flyway.java:919)     在org.flywaydb.core.Flyway.execute(Flyway.java:1320)     在org.flywaydb.core.Flyway.migrate(Flyway.java:919)

似乎版本3.1中也存在平台依赖性。 我真的需要同时使用这两种操作系统平台,所以有什么方法可以解决这个问题吗?

更新:

我看到仍然有很多人遇到同样的问题,所以这是解决问题的方法。

我刚关闭了验证并等待4号飞机,他们说这个问题已解决了。

Flyway flyway = new Flyway(); 
...
flyway.setValidateOnMigrate(false);

3 个答案:

答案 0 :(得分:4)

此行为在Flyway 4.0中已得到修复。看到 https://github.com/flyway/flyway/issues/253

答案 1 :(得分:2)

这是Git的一个已知问题:https://github.com/flyway/flyway/issues/253

您可以通过在.gitattributes中正确配置CRLF处理来解决这个问题,以便在所有平台上提供一致的行结尾(LF),例如添加* text eol=lf并仅添加二进制格式的异常。

答案 2 :(得分:1)

您有3个选项:

  1. 使用flyway版本4.0
  2. 使用maven Flyway.repair()
  3. 删除SQL文件。清洁和重建。再次创建SQL文件。