Bestehende Datenbanken
Zwei Wege in die Historie: eine Datenbank übernehmen, die schon passt, und eine von Hand migrierte Änderung annehmen.
Eine Datenbank ohne Historie
Eine Datenbank, die hbm2ddl angelegt hat, hat keine Historie und wird standardmäßig abgelehnt. Mit adoptExistingSchema trägt der Executor sie ohne DDL als Revision 1 ein, aber nur, wenn jede Tabelle und Sequenz des Ziels existiert und die Datenbank genau passt.
Der eine häufige Unterschied
Hibernate benennt Enum-CHECK-Constraints nach PostgreSQL-Art, das Framework nach einem Hash der Spalten-ID. Die Ablehnung nennt beide Namen; benenne den Constraint um und starte erneut.
Der Executor vergleicht auch die Definition jedes Checks; ein umbenannter Constraint besteht nur, wenn er genau die modellierten Werte erzwingt. position >= 0 einer @OrderColumn weicht vom modellierten Bereich ab und muss ersetzt werden.
Änderungen, die der Executor nicht planen kann
Typ- und Primärschlüsseländerungen und andere brauchen eine Datenmigration und werden abgelehnt. Die Ablehnung nennt den Fingerprint des Ziels. Migriere die Datenbank von Hand genau auf das Ziel und starte einmal mit diesem Fingerprint.