提问者:小点点

从gradle 4升级到6后的H2和flyway压碎测试


我正在从四年级升到六年级。这迫使我升级了很多东西,比如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
  • 组织。flywaydb:flyway core:6.4.1(尽管在gradle我放了6.4.2)
  • com。h2数据库:h2:1.4.200
  • mysql:mysql连接器java:8.0.18

有什么想法吗?


共1个答案

匿名用户

H2自1.4.200版以来,仅在MySQL兼容模式下才允许MySQL样式的ALTER tableName DROP indexName。在1.4.199和旧版本中,所有模式都错误地接受了此无效(对于H2)命令。

您需要附加;MODE=MySQL到H2的JDBC URL。