mysqldump
polecenie dołączone do MySQL od wersji 4.1.1
domyślnie tworzy skrypt, który wyłącza sprawdzanie kluczy obcych. W górnej części pliku zrzutu znajduje się następujący wiersz:
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40014 ... */
składnia to komentarz warunkowy
które zostaną wykonane na MySQL w wersji 4.0.14 i nowszych. Stare ustawienie sprawdzania kluczy obcych jest przywracane pod koniec pliku zrzutu:
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
Zauważ, że komentarze warunkowe są interpretowane przez klienta (zamiast serwera). Jeśli załadujesz plik zrzutu za pomocą klienta, który ich nie obsługuje, sprawdzanie kluczy obcych nie zostanie wyłączone i mogą wystąpić błędy. Aby uzyskać najlepsze wyniki, sugeruję ładowanie plików zrzutu za pomocą oficjalnego klienta wiersza poleceń mysql:
mysql -hserver -uuser -p database < dumpfile.sql
Warto również zauważyć, że jeśli mysqldump
jest uruchamiany z --compact
opcja, to polecenia wyłączania i ponownego włączania sprawdzania kluczy obcych są pomijane w pliku zrzutu.