2017-07-16 14 views
0

ÜbersichtFlyway Ausgabe in Tabellen löschen, wenn die Anwendung beendet wird

Ich werde flyway db Migration zu einem vorhandenen Projekt mit den folgenden Konfigurationen hinzuzufügen:

  • Projekttyp: Frühlings-Boot-
  • DB: MariaDB

applikations local.yaml (Flyway und Datenquelle configs):

... 

    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 
    ... 

Ausgabe:

Wenn die Anwendung beendet wird, db-Tabellen werden nicht gelöscht. Aber wie ich ddl-auto: create-drop verwendet habe, wird erwartet, dass Tabellen fallen gelassen werden.

Hinweis:Ich weiß, es scheint ein bisschen seltsam Flyway für flüchtige DB zu verwenden. Es gibt einige Konfigurationsklassen, um Anfangsdaten beim Start einzufügen. Wenn die Datenbank nicht gelöscht wird, während die Anwendung gestoppt wird, kommt es beim nächsten Start zu Beanstandungen [z. B. eindeutige Beschränkungsverletzungen], da die Anfangswerte bereits eingefügt wurden.

Ich wäre dankbar, wenn mir jemand mit ihrer echten Lösung helfen könnte.

Antwort

0

Die documentation for create-drop Staaten:

das Schema löschen und auf Sessionstart neu. Lassen Sie außerdem das Schema beim Beenden von SessionFactory fallen.

Wie stoppen Sie Ihre Anwendung? Ich vermute, dass Sie nicht die SessionFactory heruntergefahren werden, wenn Sie die Anwendung zu beenden

Vielleicht möchten Sie den /shutdown Endpunkt Ihrer spring-boot Anwendung hinzuzufügen als here angegeben ordnungsgemäß herunterzufahren Ihre Anwendung

Verwandte Themen