O
mysqldump
comando incluído no MySQL desde a versão 4.1.1
por padrão, produz um script que desativa as verificações de chave estrangeira. A linha a seguir está incluída na parte superior do arquivo de despejo:/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
O
/*!40014 ... */
sintaxe é um comentário condicional
que será executado no MySQL versão 4.0.14 e posterior. A configuração antiga de verificações de chave estrangeira é restaurada no final do arquivo de despejo:/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
Observe que os comentários condicionais são interpretados pelo cliente (em vez do servidor). Se você carregar o arquivo de despejo com um cliente que não oferece suporte a eles, as verificações de chave estrangeira não serão desabilitadas e você poderá encontrar erros. Para melhores resultados, sugiro carregar arquivos de despejo usando o cliente oficial de linha de comando mysql:
mysql -hserver -uuser -p database < dumpfile.sql
Também vale a pena notar que se
mysqldump
é executado com o --compact
opção, os comandos para desativar e reativar as verificações de chave estrangeira são omitidos do arquivo de despejo.