Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Nur mysqldump-Schema, Schema-Update ohne Drop

Woher weiß MySQL, was aktualisiert werden soll? Es kann nicht wissen, in welchem ​​Zustand sich die Datenbank eines anderen befinden wird, also kann es nicht wissen, welche Updates anzuwenden sind. Außerdem erfordern Aktualisierungen häufig mehr als nur das Ändern des Schemas; Möglicherweise müssen bereits vorhandene Daten geändert oder Daten vom alten Schema in das neue verschoben werden. Sie werden nie etwas bekommen, das all das automatisch erkennt.

Die richtige Lösung besteht darin, Migrationen zu schreiben. Jedes Mal, wenn Sie die Datenbank ändern, schreiben Sie, anstatt nur das Schema Ihrer Entwicklungskopie selbst zu ändern, ein Skript, um vom vorherigen Schema auf das neue zu aktualisieren (und normalerweise ein Skript, um auf das vorherige Schema zurückzustufen, damit Sie dies tun können wenn Sie ein Update rückgängig machen müssen). Dieses Skript erledigt alles, was Sie zum Ändern des Schemas, zum Verschieben von Daten und dergleichen benötigen.

Die meisten modernen Web-Frameworks, wie Ruby on Rails , haben Unterstützung für Migrationen, damit Sie leichter nachverfolgen können, welche Migrationen Sie bereits ausgeführt haben. Wenn Sie kein Framework verwenden, das Migrationen unterstützt, wäre es nicht zu schwierig, Ihre eigenen Skripts zum Anwenden von Migrationen zu schreiben. Nummerieren Sie einfach jede Migration oder geben Sie ein Datum ein und führen Sie eine Tabelle in Ihrer Datenbank, in der nur die aktuelle Version des Schemas gespeichert ist, auf dem Sie sich befinden. Wenn Sie Ihr Migrationsskript ausführen und es Migrationen gibt, die neuer als diese aktuelle Version sind, wenden Sie diese Skripts der Reihe nach an und aktualisieren Sie dann die Nummer in der Datenbank, die angibt, auf welcher Version Sie sich befinden.