gpt4 book ai didi

java - 如何在 Spring Boot 应用程序中使用 Flyway 启动 H2 db TCP 服务器

转载 作者:行者123 更新时间:2023-12-02 12:23:21 24 4
gpt4 key购买 nike

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

所以我有这样的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 数据库服务器的配置类。

@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迁移直到数据库服务器启动?

最佳答案

我找到了解决方案:

@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;
}
}

关于java - 如何在 Spring Boot 应用程序中使用 Flyway 启动 H2 db TCP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com