Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Você pode criar automaticamente um arquivo mysqldump que não impõe restrições de chave estrangeira?


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.