Mysql, Backups und Kommentare in Prozeduren, Triggern und Funktionen

7. August 2008 von stefan.haubold

Bei einem Projekt, das ich mit betreue, steht demnächst ein Umzug einer ziemlich komplexen Datenbankanwendung an. Die Anwendung ist in Mysql 5.0.X programmiert und nutzt Prozeduren, Trigger usw. Eigentlich sollte das ja ganz einfach sein,per Mysqldump sichern und dann auf der neuen Maschine wieder einspielen. 

Im Grunde klappt das auch, nur leider gehen dabei alle Kommentare die man innerhalb der Prozeduren genutzt hat verloren. Kommentarlos.

Nach kurzer Suche bei Google findet man den folgenden Bug im MySQL-Bugtracker: In Procedures Comments being dropped… Dort wird beschrieben, dass nach dem Sichern per MysqlDump und dem wieder einspielen des Dumps alle Kommentare verschwunden sind. Lösung gibt es in Version 5.1.23, der komplette 5.1. Zweig ist aber noch nicht freigegeben.

Ich habe inzwischen mehrere Stunden nach einer Lösung gesucht, aber bisher nichts gefunden. Ein erster Versuch, einfach den 5.1.23 Client zum wieder einspielen zu benutzen, funktioniert leider nicht, da der sich am Syntax des Dumpes stört. Einen Dump mit dem 5.1.23 mysqldump erstellen klappt auf den ersten Blick, wenn man sich dann aber das gedumpte SQL anschaut, wird darin in einem Kommentar darauf hingewiesen, dass die Server Version älter ist als die mysqldump Version und das deswegen der Dump unter umständen nicht vollständig ist. Das steht aber wie gesagt nur in den Kommentaren vor dem Teil in dem die Prozeduren erzeugt werden. MysqlDump läuft kommentarlos durch. Allerdings ist das auch nicht ganz so schlimm, das Einspielen dieses Dumpes klappte bei unsere Datenbank auch nicht, ist also nicht weiter schlimm wenn es sowieso nicht vollständig war.

Interessanterweise ist es generell nicht möglich, mit dem normalen Kommandozeilen-Tool (“mysql”) einen Kommentar in eine Prozedur einzufügen. Die offiziellen Tools (MySQL Query Analyzer) und auch andere Tools wie sqlYog unterstützen das aber ohne Problem.

Aktuell sieht es so aus, das uns wohl nichts anderes übrig bleiben wird, als die Datenbank mit einem Dump ohne Kommentare einzuspielen. Erst einmal Alles wieder zum laufen zu bekommen und danach von Hand per SqlYog die Proceduren, Trigger usw zu kopieren um die Kommentare nicht zu verlieren. Eventuell lässt sich das zumindestens über die Funktionen des Tool ein wenig automatisieren.

Insgesamt verstärkt dieses Problem meinen (subjektiven) Eindruck, dass die ganzen “Enterprise” Funktionen von kaum jemanden genutzt werden. Der Bug Report ist ziemlich kurz und ich kann mir wirklich nicht vorstellen, dass es nur so wenige gibt die sich an dem Problem stören. Immerhin ist es seit dem 5.10.2006 bekannt. Aber vermutlich haben noch einige User eine kleine Überraschung vor sich, wenn es irgendwann mal daran geht die Backups wieder einzuspielen und dann (vermutlich) ein paar Wochen später festzustellen das die ganzen schönen Kommentare weg sind.

Der Bugfix in 5.1.23 wird daran vermutlich auch nicht viel ändern, das übernehmen der Kommentare ist nämlich per Default deaktiviert, erst du setzen von “–comments” werden die Kommentare mit eingespielt. Wer brauch schon Kommentare, die sind im allgemeinen sowieso überbewertet.

Abgelegt unter: MySQL | Kommentare (0)

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.