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

MySQL DROP todas as tabelas, ignorando chaves estrangeiras


Achei útil o conjunto gerado de instruções drop e recomendo estes ajustes:
  1. Limite as gotas geradas ao seu banco de dados assim:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';

Observação 1:isso não executa as instruções DROP, apenas fornece uma lista delas. Você precisará recortar e colar a saída em seu mecanismo SQL para executá-los.

Observação 2:se você tiver VIEWs, precisará corrigir cada DROP TABLE `VIEW_NAME` instrução para DROP VIEW `VIEW_NAME` manualmente.
  1. Observação, por http://dev.mysql .com/doc/refman/5.5/en/drop-table.html , descartar com cascata é inútil / enganoso:

Portanto, para que as instruções drop funcionem, se você precisar:
SET FOREIGN_KEY_CHECKS = 0

Isso desabilitará as verificações de integridade referencial - então, quando você terminar de executar as eliminações necessárias, você desejará redefinir a verificação de chave com
SET FOREIGN_KEY_CHECKS = 1
  1. A execução final deve ser semelhante a:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;

NB:para usar a saída do SELECT mais fácil, a opção mysql -B pode ajudar.