Ich habe eine lange Reihe von Liquibase Changesets. Einer von ihnen erstellt eine MySQL-Prozedur, und ich habe gerade herausgefunden, dass diese Prozedur nicht erstellt wird und das ganze liquibase-Skript folglich auf MySQL scheitern wird, wenn keine spezielle MySQL-Option gesetzt ist (log_bin_trust_function_creators = 1).Korrigieren eines Fehlers in Liquibase-Skript
Jetzt ist das Changeset, das dieses Verfahren erstellt hat, tief in der Geschichte. Was ist der richtige Ansatz, um es zu ändern? Das Hinzufügen eines neuen Changesets, das die Prozedur reparieren würde, hilft nicht, da die gesamte Verarbeitung auf der alten fehlschlägt. Ich habe ungefähr 100 Server mit Datenbanken, die von diesem liquibase-Skript verwaltet werden. Ich muss sie eigentlich nicht reparieren, ich muss nur das Skript ändern (aus Gründen der zukünftigen Server) und nicht die bestehenden Server brechen, wenn sie das nächste Mal liquibase aktualisiert.
Nun, die Prozedur existiert bereits auf dem alten Server, also wird der Versuch, sie neu zu erstellen, zu einem Fehler führen, oder? –
Können Sie nicht 'erstellen oder ersetzen' in SQL-Prozedur, so wird es nur bestehende ersetzen? – dbf
Der "or replace" Modifier scheint nicht mit Funktionen und Verfahren zu arbeiten, nach der Dokumentation von mysql 5.7 –