2017-01-23 3 views
0

Ich habe Spring-Boot-Anwendung, die Datenbank-Migrationen mit Liquibase definiert haben. Wenn ich das Anwendungsskript starte, warte 500s und überprüfe den http-Status der Anwendung. Wenn das Fehlercode-Skript zurückgegeben wird, wird der Anwendungsprozess beendet und es wird versucht, die Anwendung erneut zu starten. Die Anwendung wird beim Starten manchmal beendet, und liquibase entfernt keine Datensätze aus databasechangeloglock. Wenn die Anwendung das nächste Mal ausgeführt wird, wartet sie auf die Freigabesperre. Dies geschieht jedoch nicht und die Anwendung wird immer wieder beendet.Spring liquibase wiederherstellen, wenn Anwendung abgestürzt ist

In Protokollen letzte Zeilen aus jeder Anwendung sind:

liquibase : Waiting for changelog lock.... 
liquibase : Waiting for changelog lock.... 

Haben Sie Ideen, wie man dieses Problem im Skript zu lösen?

Antwort

1

Liquibase Änderungen werden durch zwei Tabellen gesteuert, die in dem Schema sein werden, die geändert wird:

1) http://www.liquibase.org/documentation/databasechangeloglock_table.html

2) http://www.liquibase.org/documentation/databasechangelog_table.html

Ihre Änderungen nicht, weil die databasechangeloglock Tabelle ausgeführt werden hat die Spalte LOCKED gesetzt. Sie können dies manuell aufheben, bevor Sie den Server/die Anwendung erneut starten.

sehr vorsichtig sein, welche Änderungs ausgeführt haben, bevor Sie dieses

tun, wenn Sie sicher sind, eine Änderung Set Sie können die relavent Reihe von beiden Änderungsprotokoll Tabellen nicht ausgeführt wurde gelöscht.

Verwandte Themen