我目前正在使用 Quarkus 和导入的 Flyway 扩展来执行数据库迁移。目前它对于默认模式“public”运行良好,但它似乎无法选择其他 .sql 文件来运行。
我目前的文件夹结构如下: 数据库/食物 数据库/公共
我将要运行以进行迁移的所有 .sql 文件存储到单独的文件夹中,每个文件夹映射到数据库中的架构名称(这只是命名约定,以便我们更容易跟踪)。
现在对于 application.properties 文件,这就是我目前拥有的:
# common flyway configs for all schemas
quarkus.flyway.enabled=true
quarkus.flyway.migrate-at-start=true
quarkus.flyway.out-of-order=true
quarkus.flyway.repair-at-start=true
quarkus.flyway.ignore-migration-patterns=*:ignored
quarkus.flyway.validate-migration-naming=true
#quarkus.flyway.schemas=public,food
# public schema config
quarkus.flyway.baseline-on-migrate=true
quarkus.flyway.baseline-version=0.9.4
quarkus.flyway.baseline-description=Initial version
quarkus.flyway.schemas=public
quarkus.flyway.locations=db/public
quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=${DB_USER}
quarkus.datasource.password=${DB_PASS}
quarkus.datasource.jdbc.url=${JDBC_URL}
# food schema config
quarkus.flyway.food.enabled=true
quarkus.flyway.food.baseline-on-migrate=true
quarkus.flyway.food.baseline-version=0.9.4
quarkus.flyway.food.baseline-description=Initial version
quarkus.flyway.food.schemas=food
quarkus.flyway.food.locations=db/food
quarkus.datasource.food.db-kind=postgresql
quarkus.datasource.food.username=${DB_USER}
quarkus.datasource.food.password=${DB_PASS}
quarkus.datasource.food.jdbc.url=${JDBC_URL}
但是,每当它运行时,它似乎只扫描 db/public 文件夹内的迁移。来自其他文件夹的其他迁移将不会运行。
如果有人有任何想法,那就太好了。或者如果有人需要更多详细信息,我可以提供。
发现成功指定特定模式名称,如下所示:
quarkus.datasource.jdbc.url=${JDBC_URL}?currentSchema=public
quarkus.datasource.food.jdbc.url=${JDBC_URL}?currentSchema=food
# this one as well
quarkus.flyway.food.migrate-at-start=true