Mysql
 sql >> Database >  >> RDS >> Mysql

Puoi creare automaticamente un file mysqldump che non impone vincoli di chiave esterna?

Il mysqldump comando incluso in MySQL dalla versione 4.1.1 per impostazione predefinita produce uno script che disattiva i controlli della chiave esterna. La seguente riga è inclusa nella parte superiore del file dump:

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

Il /*!40014 ... */ la sintassi è un commento condizionale che verrà eseguito su MySQL versione 4.0.14 e successive. La vecchia impostazione dei controlli della chiave esterna viene ripristinata verso la fine del file dump:

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

Si noti che i commenti condizionali sono interpretati dal client (piuttosto che il server). Se carichi il file dump con un client che non li supporta, i controlli della chiave esterna non verranno disabilitati e potresti riscontrare errori. Per ottenere i migliori risultati, suggerirei di caricare i file di dump utilizzando il client ufficiale della riga di comando mysql:

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

Vale anche la pena notare che se mysqldump viene eseguito con --compact opzione, quindi i comandi per disabilitare e riattivare i controlli della chiave esterna vengono omessi dal file dump.