Ich habe einen Backup-Skript für meine MySQL-Datenbank, mit mysqldump
mit der --tab
Option, so dass es eine .sql
-Datei für die Struktur und eine .txt
Datei (Rohr-getrennt) für den Inhalt erzeugt.Deaktivieren Fremdschlüsselprüfungen auf der Kommandozeile
Einige Tabellen Fremdschlüssel haben, so dass, wenn ich es importieren Ich erhalte die Fehlermeldung:
ERROR 1217 (23000) at line 8: Cannot delete or update a parent row: a foreign key constraint fails
ich weiß, mit SET FOREIGN_KEY_CHECKS=0
(und SET FOREIGN_KEY_CHECKS=1
später). Wenn ich diese zu jeder .sql
Datei hinzufüge, dann funktioniert der Import. Aber dann offensichtlich auf die nächsten mysqldump
diejenigen überschrieben werden.
ich es als separater Befehl ausgeführt wird, auch versucht, unten wie aber der Fehler kommt zurück:
echo "SET FOREIGN_KEY_CHECKS=0" | mysql [user/pass/database]
[all the imports]
echo "SET FOREIGN_KEY_CHECKS=1" | mysql [user/pass/database]
Gibt es eine andere Möglichkeit FK Kontrollen auf der Kommandozeile zu deaktivieren?
Dies sieht aus wie der beste Weg. Es ist überraschend, dass mysqldump keine Option "--disable-foreign-keys" hat. – Barmar
@Barmar erinnern, dass Fremdschlüssel ein Produkt der InnoDB-Engine sind, anstatt MySQL selbst –
Danke, das funktioniert! Das Setzen von FK-Checks funktioniert also nur für einen Befehl, anstatt über mehrere Befehle hinweg zu bestehen? – DisgruntledGoat