sql >> Base de Datos >  >> RDS >> Mysql

MySQL DROP todas las tablas, ignorando claves foráneas

Encontré útil el conjunto generado de sentencias drop y recomiendo estos ajustes:

  1. Limite las gotas generadas a su base de datos de esta manera:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';

Nota 1:Esto no ejecuta las sentencias DROP, solo le da una lista de ellas. Deberá cortar y pegar la salida en su motor SQL para ejecutarlos.

Nota 2:si tiene vistas, deberá corregir cada DROP TABLE `VIEW_NAME` declaración a DROP VIEW `VIEW_NAME` manualmente.

  1. Nota, por http://dev.mysql .com/doc/refman/5.5/en/drop-table.html , caer con cascada no tiene sentido/engañoso:

Por lo tanto, para que las sentencias drop funcionen si necesita:

SET FOREIGN_KEY_CHECKS = 0

Esto deshabilitará las verificaciones de integridad referencial, por lo que cuando termine de realizar las caídas que necesita, querrá restablecer la verificación de claves con

SET FOREIGN_KEY_CHECKS = 1
  1. La ejecución final debería verse así:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;

NB:para usar la salida de SELECT más fácilmente, la opción mysql -B puede ayudar.