#spring #hibernate #multi-tenant #flyway #quarkus
#весна #спящий режим #многопользовательский #flyway #quarkus
Вопрос:
Доброе утро, я пытаюсь настроить проект QUARKUS с помощью flyway, hibernate, panache и multitenant. Но скрипт запускается только один раз на первой схеме, кто-нибудь знает, как работать на других схемах?
application.yml
datasource:
db-kind: postgres
username: postgres
password: 1234
jdbc:
url: jdbc:postgresql://localhost:5432/postgres
driver: org.postgresql.Driver
hibernate-orm:
multitenant: SCHEMA
dialect: org.hibernate.dialect.PostgreSQLDialect
log:
sql: true
flyway:
migrate-at-start: true
baseline-on-migrate: true
baseline-version: 1.0.0
create-schemas: true
clean-at-start: true
schemas: maripa, bicas, rhino
locations: db/migration/maripa, db/migration/bicas, db/migration/rhino
ЖУРНАЛ
__ ____ __ _____ ___ __ ____ ______
--/ __ / / / / _ | / _ / //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /
--________/_/ |_/_/|_/_/|_|____/___/
2021-03-09 07:41:54,213 INFO [io.qua.fly.FlywayProcessor] (build-13) Adding application migrations in path '/home/idd_acosta/freelas/rhino/rhino-api/target/classes/db/migration/maripa/' using protocol 'file'
2021-03-09 07:41:54,844 INFO [io.qua.arc.pro.BeanProcessor] (build-8) Found unrecommended usage of private members (use package-private instead) in application beans:
- @Inject field br.com.rhino.user.mapper.RoleMapperImpl#permissionMapper,
- @Inject field br.com.rhino.user.mapper.UserMapperImpl#roleMapper
2021-03-09 07:41:56,228 INFO [org.fly.cor.int.lic.VersionPrinter] (Quarkus Main Thread) Flyway Community Edition 7.5.2 by Redgate
2021-03-09 07:41:56,348 INFO [org.fly.cor.int.dat.bas.DatabaseType] (Quarkus Main Thread) Database: jdbc:postgresql://localhost:5432/postgres (PostgreSQL 13.1)
2021-03-09 07:41:56,380 INFO [org.fly.cor.int.com.DbClean] (Quarkus Main Thread) Successfully dropped pre-schema database level objects (execution time 00:00.001s)
2021-03-09 07:41:56,426 INFO [org.fly.cor.int.com.DbClean] (Quarkus Main Thread) Successfully dropped schema "maripa" (execution time 00:00.044s)
2021-03-09 07:41:56,428 INFO [org.fly.cor.int.com.DbClean] (Quarkus Main Thread) Successfully dropped schema " bicas" (execution time 00:00.001s)
2021-03-09 07:41:56,430 INFO [org.fly.cor.int.com.DbClean] (Quarkus Main Thread) Successfully dropped schema " rhino" (execution time 00:00.001s)
2021-03-09 07:41:56,430 INFO [org.fly.cor.int.com.DbClean] (Quarkus Main Thread) Successfully dropped post-schema database level objects (execution time 00:00.000s)
2021-03-09 07:41:56,432 INFO [org.fly.cor.int.lic.VersionPrinter] (Quarkus Main Thread) Flyway Community Edition 7.5.2 by Redgate
2021-03-09 07:41:56,437 INFO [org.fly.cor.int.dat.bas.Schema] (Quarkus Main Thread) Creating schema "maripa" ...
2021-03-09 07:41:56,439 INFO [org.fly.cor.int.dat.bas.Schema] (Quarkus Main Thread) Creating schema " bicas" ...
2021-03-09 07:41:56,439 INFO [org.fly.cor.int.dat.bas.Schema] (Quarkus Main Thread) Creating schema " rhino" ...
2021-03-09 07:41:56,443 INFO [org.fly.cor.int.sch.JdbcTableSchemaHistory] (Quarkus Main Thread) Creating Schema History table "maripa"."flyway_schema_history" ...
2021-03-09 07:41:56,487 INFO [org.fly.cor.int.com.DbMigrate] (Quarkus Main Thread) Current version of schema "maripa": null
2021-03-09 07:41:56,496 INFO [org.fly.cor.int.com.DbMigrate] (Quarkus Main Thread) Migrating schema "maripa" to version "1.0.1 - start structure maripa"
2021-03-09 07:41:56,555 INFO [org.fly.cor.int.com.DbMigrate] (Quarkus Main Thread) Successfully applied 1 migration to schema "maripa" (execution time 00:00.078
Как вы можете видеть, он выполнялся только в первой схеме. Как запустить все три?
Obs.: Извините за мой английский! 🙂
Ответ №1:
Поздно к этому вопросу, но из документов Quarkus похоже, что это сделано специально.
Имя таблицы истории схемы Flyway. По умолчанию (режим с одной схемой) таблица истории схемы помещается в схему по умолчанию для подключения, предоставляемого источником данных. Когда свойство flyway.schemas установлено (режим нескольких схем), таблица истории схемы помещается в первую схему списка.
Я думаю, для этого нужна только одна таблица схемы, поскольку все три «арендатора» должны быть сохранены в одной и той же версии?