【问题标题】:How to start H2 db TCP server within Spring Boot application and with flyway如何在 Spring Boot 应用程序中和使用 flyway 启动 H2 db TCP 服务器
【发布时间】:2018-01-19 02:14:36
【问题描述】:

我在 Flyway 中使用 Spring Boot 和 H2 db,我想在我的应用程序启动时启动 H2 db tcp 服务器(用 Spring Boot 编写)。

所以我有这样的 application.properties 文件。

db.port=9090
spring.datasource.url=jdbc:h2:tcp://localhost:${db.port}/./database/ifin-relax
spring.datasource.username=sa
spring.datasource.password=password
spring.datasource.driver-class-name=org.h2.Driver

flyway.baseline-on-migrate=true
flyway.url=jdbc:h2:tcp://localhost:${db.port}/./database/ifin-relax
flyway.table=SCHEMA_VERSION
flyway.user=sa
flyway.password=password

而且我还有以下用于 h2 db 服务器的配置类。

@Configuration
public class H2DBServerConfiguration {

    @Value("${db.port}")
    private String h2DbPort;

    @Bean
    public Server server() throws SQLException {
        return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", h2DbPort).start();
    }
}

但是当我运行应用程序时,它会因异常而失败

Error creating bean with name 'flywayInitializer' defined in class path resource

似乎 flyway 甚至在 H2 的 TCP 服务器被实例化之前就尝试应用迁移。那么问题是如何推迟 flyway 迁移,直到 DB Server 启动?

【问题讨论】:

  • 我对 sprint boot 不熟悉,但是在您的配置中密码不同:密码 != prime。
  • 我的错,修改了密码。
  • 抱歉,我没办法了。你还有日志吗?也许打开调试。
  • 我已经找到了解决办法,谢谢

标签: java spring-boot flyway h2db


【解决方案1】:

我找到了解决办法:

@Configuration
public class H2ServerConfiguration {

    @Value("${db.port}")
    private String h2TcpPort;

   /**
    * TCP connection to connect with SQL clients to the embedded h2 database.
    *
    * @see Server
    * @throws SQLException if something went wrong during startup the server.
    * @return h2 db Server
    */
    @Bean
    public Server server() throws SQLException {
        return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", h2TcpPort).start();
    }

    /**
     * @return FlywayMigrationStrategy the strategy for migration.
     */
     @Bean
     @DependsOn("server")
     public FlywayMigrationStrategy flywayMigrationStrategy() {
         return Flyway::migrate;
     }
}

【讨论】:

猜你喜欢
  • 2016-09-01
  • 2018-09-02
  • 2020-07-23
  • 2020-05-30
  • 2020-08-14
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
相关资源
最近更新 更多