Estou tentando excluir todas as tabelas de um banco de dados, exceto uma, e acabo tendo o seguinte erro:
Não é possível excluir ou atualizar uma linha pai: uma restrição de chave estrangeira falha
É claro que eu poderia tentar e errar para ver quais são essas restrições principais e, eventualmente, excluir todas as tabelas, mas gostaria de saber se existe uma maneira rápida de forçar a eliminação de todas as tabelas (pois poderei reinserir aquelas que não deseja excluir).
O Google me direcionou para algum site que sugerisse o seguinte método:
mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
A resposta curta é que realmente não funcionou, pois acabei recebendo o mesmo erro enquanto conseguia excluir mais algumas tabelas. Vi em Stack Overflow maneiras de vincular todas as chaves estrangeiras a uma determinada tabela, mas isso consome muito tempo, a menos que eu escreva tudo (o que é possível no caso de não haver outra opção)
Banco de dados é 4.1, então eu não posso usar DROP DATABASE
Ideias?
fonte
Respostas:
Como você não está interessado em manter nenhum dado, descarte o banco de dados inteiro e crie um novo.
fonte
Isso pode ser útil para alguém que acaba aqui a partir de uma pesquisa. Verifique se você está tentando largar uma mesa e não uma vista .
SET foreign_key_checks = 0
é desativar as verificações de chave estrangeira eSET foreign_key_checks = 1
ativar novamente as verificações de chave estrangeira. Enquanto as verificações estão desativadas, as tabelas podem ser descartadas, depois as verificações são ativadas novamente para manter a integridade da estrutura da tabela.fonte
Se você estiver usando o phpmyadmin , esse recurso já estará lá.
fonte
Você pode usar as etapas a seguir, funcionou para eu soltar a tabela com restrições, solução já explicada no comentário acima, acabei de adicionar a captura de tela para isso -
fonte
O banco de dados descartado existe em todas as versões do MySQL. Mas se você quiser manter a estrutura da tabela, aqui está uma ideia
mysqldump --no-data --add-drop-database --add-drop-table -hHOSTNAME -uUSERNAME -p> dump.sql
Este é um programa, não um comando mysql
Então, entre no mysql e
fonte dump.sql;
fonte
Solução simples para descartar toda a tabela de uma só vez do terminal.
Isso envolveu algumas etapas dentro do seu shell mysql (embora não seja uma solução de uma etapa), isso funcionou comigo e salvou meu dia.
Trabalhou para a versão Server: 5.6.38 MySQL Community Server (GPL)
Etapas que eu segui:
Shell MySQL
fonte