Wenn Sie den obigen Inhalt nicht gelesen haben, können Sie ihn lesen, wenn Sie interessiert sind. Im obigen Artikel mit JDBCtemplate wird die Benutzertabelle hauptsächlich hinzugefügt, gelöscht, geändert und über JDBCTEMplate überprüft, die von Spring bereitgestellt werden. Bei der Implementierung dieses Beispiels haben wir die Benutzertabelle in MySQL im Voraus erstellt. Wir verwenden häufig den Prozess des Erstellens von Tabellen, wenn wir das System tatsächlich entwickeln, aber es gab immer ein Problem. Da die Programmversion eines Systems durch Git gut gesteuert wird, und die Datenbankstruktur nicht. Auch wenn wir Anweisungen über Git übertreffen, wie verwaltet ich die Version in den Datenbanken jeder Umgebung? Als nächstes lernen wir, wie Sie mit Flyway Datenbankversionen in Spring Boot über diesen Artikel verwalten.
Einführung in die Flyway
Flyway ist ein einfacher Open -Source -Datenbankversionskontroller (die Konvention ist größer als die Konfiguration), die hauptsächlich Migrate, Reinigung, Informationen, Validieren, Grundlinien, Reparaturen und andere Befehle bietet. Es unterstützt SQL (PL/SQL, T-SQL) und JAVA-Methoden, unterstützt Befehlszeilenclients usw. und bietet auch eine Reihe von Plug-in-Unterstützung (Maven, Gradle, SBT, Ant usw.).
Offizielle Website: https://flywaydb.org/
In diesem Artikel werden die eigenen Funktionen von Flyway nicht zu sehr eingeführt. Leser können weitere Informationen erhalten, indem sie offizielle Dokumente lesen oder Suchmaschinen verwenden. Im Folgenden werden wir im Detail über die Anwendung in Spring -Boot -Anwendung sprechen, wie Sie Flyway zum Erstellen von Datenbanken verwenden und die Struktur inkonsistent überprüfen.
Probieren Sie es aus
Im Folgenden können wir die Verarbeitung mit dem Beispiel im Artikel mit JDBCTEMplate ausfüllen. Die Leser können auch jedes Projekt verwenden, das sich auf den Datenzugriff zum Experiment mit dem folgenden Inhalt bezieht:
Der erste Schritt besteht darin, die Abhängigkeit von Flyway in pom.xml hinzuzufügen:
<Depopenty> <gruppe> org.flywaydb </Groupid> <artifactid> flyway-core </artifactId> <version> 5.0.3 </Version> </abhängig>
Der zweite Schritt besteht darin, ein versioniertes SQL -Skript gemäß den Spezifikationen von Flyway zu erstellen.
Erstellen Sie ein DB -Verzeichnis unter dem Verzeichnis SRC/Main/Ressourcen des Projekts
Erstellen Sie im DB -Verzeichnis ein versioniertes SQL -Skript v1__base_version.sql
Droptabelle Wenn existiert Benutzer; erstellen Sie Tabelle "Benutzer" ("id" bigint (20) nicht null auto_increment comment "primärer Schlüssel", "Name" varchar (20) Null Null -Kommentar "Name", "Alter" int (5) Standardnull -Kommentar "Alter", Primärschlüssel ("id"). Der dritte Schritt besteht darin, den Speicherort des SQL -Skripts in der Datei application.Properties zu konfigurieren. Das im zweite Schritt erzeugte Ergebnis ist wie folgt:
flyway.locations = classPath:/db
Der vierte Schritt besteht darin, Unit -Test -Anwendungstests auszuführen. Zu diesem Zeitpunkt können wir die folgenden Informationen im Protokoll sehen:
Info 82441 --- [Main] Ofcore.internal.util.versionPrinter: Flyway Community Edition 5.0.3 von BoxfuseInfo 82441-[Main] Ofcinternal.database ofcore.internal.command.DbValidate : Successfully validated 1 migration (execution time 00:00.022s)INFO 82441 --- [main] ofcore.internal.command.DbValidate : Successfully validated 1 migration (execution time 00:00.022s)INFO 82441 --- [main] ofcisJdbcTableSchemaHistory : Creating Schema-Geschichte Tabelle: `test`.`flyway_schema_history`info 82441 --- [main] ofcore.internal.Command.dbmergrat: aktuelle Version von Schema` test`: << leeres Schema >> info 82441 --- [Main] ofcore. 82441 --- [main] ofcore.internal.sqlScript.SQLScript: DB: Unbekannte Tabelle 'Test.User' (SQL-Zustand: 42S02-Fehlercode: 1051) Info 82441 --- [Main] Ofcore.internal.Command.dbmigrate: erfolgreich angewendet 1 Migration 1 Migration zu Schema `testn. 00: 00.128s)
Flyway überwacht, dass es notwendig ist, ein Versionskript auszuführen, um die Datenbank zu initialisieren. Daher wird das Skript v1__base_version.sql ausgeführt, wodurch die Benutzertabelle erstellt wird, die eine Reihe von Unit -Tests (CRUD -Operationen auf der Benutzertabelle) ermöglicht.
Im fünften Schritt können wir den Unit -Test weiter ausführen, und zu diesem Zeitpunkt werden wir feststellen, dass sich die Protokollausgabe von zuvor unterscheidet:
Info 83150 --- [Main] ofcore.internal.util.versionPrinter: Flyway Community Edition 5.0.3 von BoxfuseInfo 83150-[Haupt] Ofcinternal.Database Ofcore.Internal.Command.DBVALIDATE: erfolgreich validiert 1 Migration (Ausführungszeit 00: 00.031s) Info 83150-[Haupt] Ofcore.internal.Command.dbvalidat: erfolgreich validiert 1 Migration (Ausführungszeit 00: 00.031s). Aktuelle Version von Schema `test`: 1Info 83150 --- [main] ofcore.internal.command.dbmigrate: Schema` test` ist auf dem neuesten Stand. Keine Migration erforderlich.
Da das Initialisierungsskript im vierten Schritt ausgeführt wurde, führte die Ausführung diesmal nicht aus dem Skript v1__base_version.sql aus, um die Benutzertabelle wieder aufzubauen.
Im sechsten Schritt können wir versuchen, die Länge des Namensfelds im Skript v1__base_version.sql zu ändern und dann den Unit -Test auszuführen, können wir den folgenden Fehler erhalten:
Fehler 83791 --- [Haupt] osboot.springApplication: Anwendungsstart failedorg.springframework.bean.factory Methode fehlgeschlagen; Eine verschachtelte Ausnahme ist org.flywaydb.core.api.flywayexception: Validate fehlgeschlagen: Misum-Match-Match für Migration für Migrationsversion 1-> auf die Datenbank angewandte: 466264992-> Lokal gelöst: -270269434
Aufgrund von Änderungen im Initialisierungsskript ist die Überprüfung der Flyway fehlgeschlagen. Es wird angenommen, dass sich das aktuelle Skript v1__base_version.sql vom zuletzt ausgeführten Inhalt unterscheidet, was zu einem Fehler auftritt und das Programm beendet, um zu vermeiden, dass schwerwiegendere Datenstrukturschäden verursacht werden.
Zusammenfassen
Bisher ist der Inhalt dieses Artikels zu Ende. Aufgrund der Länge des Blog -Beitrags habe ich nicht viel über die Verwendung von Flyway ausführlicher gesagt. Dieser Artikel wird hauptsächlich als Sprungbrett verwendet, um Einzelpersonen oder Teams zu helfen und zu leiten, die Spring Boot verwenden, um die Datenbankversionssteuerung besser zu machen. Wie für detailliertere Anwendungen lesen Sie bitte die offiziellen Dokumente als Referenz und Studium.
Code dieses Artikels: GitHub: https://github.com/dyc87112/springboot-learning/
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.