【问题标题】:How to force dialect in Flyway test extensions?如何在 Flyway 测试扩展中强制使用方言?
【发布时间】:2017-07-18 04:31:09
【问题描述】:

我正在使用 Flyway test extensions 与 H2 数据库和 MySQL 方言。

很遗憾,@FlywayTest 注解使用 H2 方言执行数据库清理并以错误结束:

org.flywaydb.core.internal.dbsupport.FlywaySqlException: 
Unable to drop "PUBLIC"."site"
------------------------------
SQL State  : 42S02
Error Code : 42102
Message    : Table "site" not found; SQL statement:
DROP TABLE "PUBLIC"."site" CASCADE [42102-193]


    at org.flywaydb.core.internal.dbsupport.SchemaObject.drop(SchemaObject.java:82)
    at org.flywaydb.core.internal.dbsupport.h2.H2Schema.doClean(H2Schema.java:69)
    at org.flywaydb.core.internal.dbsupport.Schema.clean(Schema.java:148)
    at org.flywaydb.core.internal.command.DbClean$4.call(DbClean.java:184)
    at org.flywaydb.core.internal.command.DbClean$4.call(DbClean.java:181)
    at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.exec

但是,当我从控制台手动运行 DROP TABLE PUBLIC.site CASCADE(无引号)时,它会成功结束。 如何在 Flyway 测试扩展中强制使用方言?

【问题讨论】:

    标签: mysql spring h2 flyway dialect


    【解决方案1】:

    这不是注解@FlywayTest的问题。 注解@FlywayTest调用flyway.clean()方法。
    Flyway 支持 H2 仅引用模式和表的名称。
    见 Github 上的类源代码https://github.com/flyway/flyway/blob/master/flyway-core/src/main/java/org/flywaydb/core/internal/dbsupport/h2/

    我认为不会有支持H2特性模式的计划,比如Mysql, Oracle, ....

    你可以在这里https://github.com/flyway/flyway/issues打开一个问题

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 2022-12-04
      • 2011-07-27
      • 2014-08-01
      相关资源
      最近更新 更多