当 strat Spring-boot Application 时,Flyway 执行 SELECT [*]VALUE 语法错误与 h2

问题描述 投票:0回答:0

使用 h2 启用 Flyway 时,我遇到以下错误。

版本:

Spring Boot v2.7.8, Spring v5.3.25
"flyway", "7.2.1"
"h2", "2.1.214"

应用程序 yaml:

spring:
  cache:
    enabled: false
  datasource:
    url: jdbc:h2:mem:ppyDB;MODE=Oracle
    username: sa
    password: 
    driverClassName: org.h2.Driver
    initialize: true
  flyway:
    enabled: true
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect

  h2:
    console:
      enabled: true
      path: /h2-console

应用程序启动错误

错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in class path resource [myapp/config/FlywayConfig.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to determine H2 compatibility mode
-----------------------------------------
SQL State  : 42001
Error Code : 42001
Message    : Syntax error in SQL statement "SELECT [*]VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME = 'MODE'"; expected "DISTINCT, ALL, *, INTERSECTS (, NOT, EXISTS, UNIQUE, INTERSECTS"; SQL statement:
SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME = 'MODE' [42001-214]

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT [*]VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME = 'MODE'"; expected "DISTINCT, ALL, *, INTERSECTS (, NOT, EXISTS, UNIQUE, INTERSECTS"; SQL statement:
SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME = 'MODE' [42001-214]

但是,如果在没有 h2 的情况下构建应用程序(而不是使用 Oracle DB),请参阅以下错误

错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in class path resource [myapp/config/FlywayConfig.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.license.FlywayEditionUpgradeRequiredException: Flyway Teams Edition or Oracle upgrade required: Oracle 12.1 is no longer supported by Flyway Community Edition, but still supported by Flyway Teams Edition.
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
.....
Caused by: org.flywaydb.core.internal.license.FlywayEditionUpgradeRequiredException: Flyway Teams Edition or Oracle upgrade required: Oracle 12.1 is no longer supported by Flyway Community Edition, but still supported by Flyway Teams Edition.
    at org.flywaydb.core.internal.database.base.Database.ensureDatabaseNotOlderThanOtherwiseRecommendUpgradeToFlywayEdition(Database.java:165)
    at org.flywaydb.core.internal.database.oracle.OracleDatabase.ensureSupported(OracleDatabase.java:84)
spring-boot h2 flyway
© www.soinside.com 2019 - 2024. All rights reserved.