spring 可以在启动时创建一个新模式(使用 flyway)然后通过默认数据源连接到它吗?

Can spring create a new schema (using flyway) at startup and then connect to it via default datasource?

我的 spring-boot 应用程序设置了以下属性,

spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/my-schema
spring.datasource.username=root
spring.datasource.password=*****
spring.flyway.check-location=false
spring.flyway.createSchemas=true
spring.flyway.schemas=my-schema

模式 'my-schema' 不预先存在,我希望它由 flyway 创建,然后由 spring-boot 应用程序使用以启动 HikarCP 数据源。

如果我 运行 具有上述配置的应用程序在启动时出现以下错误:

Caused by: org.flywaydb.core.internal.exception.FlywaySqlException:
Unable to obtain connection from database: Unknown database 'my-schema'

现在,如果我改变,

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/

应用程序完美启动并创建了架构。但是,当它尝试查询任何 table 时,抛出的异常是:

java.sql.SQLException: No database selected

您可以使用纯粹用于迁移的 URL 配置 Flyway,然后将您的应用配置为使用不同的 URL。像这样:

spring.flyway.url=jdbc:mysql://127.0.0.1:3306
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/my-schema

您还需要使用 spring.flyway.userspring.flyway.password 为特定于 Flyway 的数据库连接提供凭据。