从 gradle 4 升级到 6 后,H2 和 flyway crush 在测试中
H2 and flyway crush on tests after upgrade from gradle 4 to 6
我正在从 gradle 4 升级到 6。
这迫使我升级许多东西,如 spring、h2、mySql 连接器等。
现在我遇到了这个问题:
在运行时,使用 MySQL 一切正常。
但在测试中,我得到:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in com.bluerbn.wallet.infra.SpringTestConfiguration: Invocation of init method failed; nested exception is org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateException:
Migration V9__fixIndex.sql failed
------------------------------------------------
SQL State : 42S22
Error Code : 42122
Message : Column "INDEX" not found; SQL statement:
ALTER TABLE table1 DROP INDEX ACC_INDEX [42122-200]
Location : db/migration/V9__fixIndex.sql (/Users/.../resources/db/migration/V9__fixIndex.sql)
Line : 1
Statement : ALTER TABLE table1 DROP INDEX ACC_INDEX
这是一个旧脚本,在升级之前运行良好。
版本:
- spring 开机:2.3.0
- org.flywaydb:flyway-core:6.4.1(尽管在 gradle 中我输入了 6.4.2)
- com.h2数据库:h2:1.4.200
- mysql:mysql-连接器-java:8.0.18
有什么想法吗?
H2 自版本 1.4.200 允许 MySQL 风格 ALTER TABLE tableName DROP INDEX indexName
仅在 MySQL 兼容模式下。在 1.4.199 和更早的版本中,这个无效的(对于 H2)命令在所有模式下都被错误地接受。
对于 H2,您需要将 ;MODE=MySQL
附加到 JDBC URL。
我正在从 gradle 4 升级到 6。 这迫使我升级许多东西,如 spring、h2、mySql 连接器等。
现在我遇到了这个问题: 在运行时,使用 MySQL 一切正常。 但在测试中,我得到:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in com.bluerbn.wallet.infra.SpringTestConfiguration: Invocation of init method failed; nested exception is org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateException:
Migration V9__fixIndex.sql failed
------------------------------------------------
SQL State : 42S22
Error Code : 42122
Message : Column "INDEX" not found; SQL statement:
ALTER TABLE table1 DROP INDEX ACC_INDEX [42122-200]
Location : db/migration/V9__fixIndex.sql (/Users/.../resources/db/migration/V9__fixIndex.sql)
Line : 1
Statement : ALTER TABLE table1 DROP INDEX ACC_INDEX
这是一个旧脚本,在升级之前运行良好。
版本:
- spring 开机:2.3.0
- org.flywaydb:flyway-core:6.4.1(尽管在 gradle 中我输入了 6.4.2)
- com.h2数据库:h2:1.4.200
- mysql:mysql-连接器-java:8.0.18
有什么想法吗?
H2 自版本 1.4.200 允许 MySQL 风格 ALTER TABLE tableName DROP INDEX indexName
仅在 MySQL 兼容模式下。在 1.4.199 和更早的版本中,这个无效的(对于 H2)命令在所有模式下都被错误地接受。
对于 H2,您需要将 ;MODE=MySQL
附加到 JDBC URL。