Eliminar todas las tablas de la base de datos en MySQL y MariaDb

Descripción: 

En ocasiones, normalmente por cuestiones de permisos, puede ser necesario eliminar manualmente todas las tablas de una base de datos, ignorando las claves ajenas. MySQL no proporciona ningún comando que realice dicha tarea, pero se puede utilizar un procedimiento almacenado que recorra el listado de tablas, y las vaya eliminando una a una

Resolución: 

El script que nos permitirá realizar esta tarea es el siguiente:

DROP PROCEDURE IF EXISTS `borrar_todas_tablas`;

DELIMITER $$
CREATE PROCEDURE `borrar_todas_tablas`()
BEGIN
    DECLARE _hecho INT DEFAULT FALSE;
    DECLARE _nombreTabla VARCHAR(255);
    DECLARE _cursor CURSOR FOR
        SELECT table_name 
        FROM information_schema.TABLES
        WHERE table_schema = SCHEMA();
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET _hecho = TRUE;

    SET FOREIGN_KEY_CHECKS = 0;

    OPEN _cursor;

    REPEAT FETCH _cursor INTO _nombreTabla;

    IF NOT _done THEN
        SET @stmt_sql = CONCAT('DROP TABLE ', _nombreTabla);
        PREPARE stmt1 FROM @stmt_sql;
        EXECUTE stmt1;
        DEALLOCATE PREPARE stmt1;
    END IF;

    UNTIL _hecho END REPEAT;

    CLOSE _cursor;
    SET FOREIGN_KEY_CHECKS = 1;
END$$

DELIMITER ;

CALL borrar_todas_tablas(); 

DROP PROCEDURE IF EXISTS `borrar_todas_tablas`;

 

Tecnología: