/ /アプリケーションが停止しているときにテーブルを削除する際のフライウェイの問題 - java、spring-boot、gradle、mariadb、flyway

アプリケーションが停止したときにテーブルを削除する際の飛行機の問題 - java、spring-boot、gradle、mariadb、flyway

概要

私は次の設定で既存のプロジェクトにflyway dbの移行を追加します:

  • プロジェクトの種類:Spring Boot
  • DB:MariaDB

application-local.yaml(フ​​ライウェイとデータソースの設定):

    ...

flyway:
enabled: true
locations: classpath:db.migration
baselineOnMigrate: true

spring:
jackson:
serialization:
indent_output: true
devtools:
restart:
enabled: false
livereload:
enabled: false
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mariadb://localhost:3306/migration
username: root
password: testing1
hikari:
data-source-properties:
leakDetectionThreshold: 2000
cachePrepStmts: true
prepStmtCacheSize: 250
prepStmtCacheSqlLimit: 2048
useServerPrepStmts: true
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect
database: MYSQL
show-sql: false
hibernate.id.new_generator_mappings: true
properties:
hibernate.cache.use_second_level_cache: false
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: false
hibernate.hbm2ddl.import_files: schema-mysql.sql
hibernate.hbm2ddl.import_files_sql_extractor: org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor
open-in-view: false
hibernate:
ddl-auto: create-drop
naming:
physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
...

問題:

アプリケーションが停止すると、dbテーブルは削除されません。しかし、私が使った ddl-auto: create-drop予想されるテーブルは削除されます。

注意: 私はFlywayを使うのがちょっと奇妙だと思っています揮発性DBです。起動時に初期データを挿入するいくつかの設定クラスがあります。アプリケーションが停止している間にdbが削除されない場合、初期値が既に挿入されているため、次の起動時に[たとえば一意の制約違反]が発生します。

誰かが真の解決策で私を助けることができたら、私は感謝しています。

回答:

回答№1は0

作成ドロップのドキュメント 州:

SessionFactoryの起動時にスキーマを削除し、再作成します。さらに、SessionFactoryのシャットダウン時にスキーマを削除します。

どのようにアプリケーションを停止していますか?私は、あなたがあなたの SessionFactory アプリケーションを停止すると

おそらく、あなたは /shutdown あなたのエンドポイント spring-boot 指定されたアプリケーション ここに アプリケーションを正常にシャットダウンする