我在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);
答案 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个选项:
flyway
版本4.0 Flyway.repair()