从 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

这是一个旧脚本,在升级之前运行良好。

版本:

有什么想法吗?

H2 自版本 1.4.200 允许 MySQL 风格 ALTER TABLE tableName DROP INDEX indexName 仅在 MySQL 兼容模式下。在 1.4.199 和更早的版本中,这个无效的(对于 H2)命令在所有模式下都被错误地接受。

对于 H2,您需要将 ;MODE=MySQL 附加到 JDBC URL。