[JAVA] Koexistenz von Flyway in der eingebetteten Datenbank (h2) der Entwicklungsumgebung und der Release-Datenbank (SQL Server) mit Spring Boot
Annahme
--Erstellen Sie eine Serveranwendung, die die Datenbank mit Spring Boot verwendet
- Ich verwende den Ruhezustand und initialisiere auch die Datenbank.
spring.jpa.hibernate.ddl-auto=update
- Die lokale Entwicklungsumgebung startet die eingebettete Datenbank mit h2 im Speicher
--Initialisieren Sie die Datenbank jedes Mal, wenn Sie die App starten
- Natürlich ist am Release-Ziel Persistenz erforderlich, wechseln Sie also zu einer anderen Datenbank
- Diesmal SQL Server
- Ich muss das Datenbankschema ändern, damit ich die Konfiguration mit Flyway verwalten kann.
Problem
- Wenden Sie Flyway an und fügen Sie SQL-Dateien in Datenbank / Migration ein, aber Konflikte zwischen zwei Arten von Datenbanken.
--H2 wird für die lokale Entwicklung verwendet, sodass keine Migration erforderlich ist.
――Es ist in Ordnung, es jedes Mal neu zu machen
- Wenn Sie SQL Server verwenden, migrieren Sie bitte
Lösungen
- Platzieren Sie SQL-Dateien für jeden Anbieter separat
- Platzieren Sie eine Dummy-SQL-Datei für h2
- Die Initialisierung des Ruhezustands bleibt davon unberührt, da zuerst Flyways SQL ausgeführt wird (da die Tabelle bereits erstellt wurde).
application.properties
spring.flyway.locations=classpath:db/migration/{vendor}
src/main/resources/
db/
migration/
H2/
V1_0_0__dummy.sql
SQLSERVER/
V1_0_0__Initial.sql
V1_1_0__AddHoge.sql
V1_0_0__dummy.sql
select 'dummy';