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

Können Sie automatisch eine mysqldump-Datei erstellen, die keine Fremdschlüsselbeschränkungen erzwingt?

Der mysqldump Befehl in MySQL enthalten seit Version 4.1.1 erzeugt standardmäßig ein Skript, das die Fremdschlüsselprüfungen ausschaltet. Die folgende Zeile ist am Anfang der Dump-Datei enthalten:

/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

Der /*!40014 ... */ Syntax ist ein bedingter Kommentar die auf MySQL-Version 4.0.14 und höher ausgeführt wird. Die alte Einstellung für Fremdschlüsselprüfungen wird gegen Ende der Dump-Datei wiederhergestellt:

/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;

Beachten Sie, dass die bedingten Kommentare vom Client interpretiert werden (anstelle des Servers). Wenn Sie die Dump-Datei mit einem Client laden, der sie nicht unterstützt, werden die Fremdschlüsselprüfungen nicht deaktiviert und es können Fehler auftreten. Für beste Ergebnisse empfehle ich, Dump-Dateien mit dem offiziellen mysql-Befehlszeilen-Client zu laden:

mysql -hserver -uuser -p database < dumpfile.sql

Es ist auch erwähnenswert, dass wenn mysqldump wird mit dem --compact ausgeführt Option, dann werden die Befehle zum Deaktivieren und erneuten Aktivieren der Fremdschlüsselprüfungen in der Dump-Datei weggelassen.