Hogyan lehet az összes táblát törölni a MySQL-ben

A mai napon az összes táblát törölni kellett a MySQL-ben. A termelő szerveren nincs phpMyAdmin, ami a kedvenc eszközöm a fejlesztési környezetemben a MySQL adatbázisok kezelésére. Így a MySQL konzollal voltam leragadva, és szükségem volt egy egyszerű módszerre a feladat elvégzésére.

Amint mindig mondom: “Google it”.

A SOW-n találtam egy elegáns szkriptet. Ebben a cikkben soronként leírom, hogy mit csinál.

Ez a kód az aktuálisan kiválasztott adatbázis összes tábláját törli
SET FOREIGN_KEY_CHECKS = 0;

Ez a sor letiltja az idegenkulcs-kényszereket. Ha két tábla kapcsolódik egymáshoz, akkor egyik táblát sem lehet törölni. Az idegenkulcs-kényszer nem teszi ezt lehetővé.

SET GROUP_CONCAT_MAX_LEN=32768;

Ez a sor a CONCAT függvény maximális hosszát állítja be. A szkript következő soraiban egy konkatenációt fog látni. Egyes MySQL-konfigurációkban ez az érték túl alacsony lehet. Ezért az esetleges hibák elkerülése érdekében elég nagyra állítjuk.

SET @tables = NULL;

Ez az a változó, amelyben a táblák nevét tároljuk.

SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables FROM information_schema.tables WHERE table_schema = (SELECT DATABASE());

Ne feledjük, hogy az összes mysql sémát az information_schema adatbázisban tároljuk. A SELECT DATABASE() segítségével határozzuk meg az aktuálisan használt adatbázist. Ez a sor kiválasztja az aktuális adatbázisban lévő táblák listáját, és a (`) karakterrel díszíti őket, és a végeredményt a tables változóban fogja tárolni, így: `table_1`, `table_2`, …, `table_n`.

SELECT IFNULL(@tables,'dummy') INTO @tables;

Ez a sor “dummy”-t tesz a tables változóba, ha a változó NULL. Ez a sor biztosítja, hogy a tables változó soha ne legyen NULL.

SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);

Ez a sor hozzáadja a “DROP TABLE IF EXISTS” szót a tables változó elé. Így a végeredmény DROP TABLE IF EXISTS `table_1`, `table_2`, …, `table_n` lesz.

Ezt a három sort nem szükséges elválasztani egymástól. Ezek a sorok végrehajtják az SQL mondatot a táblázatok változóban.

SET FOREIGN_KEY_CHECKS = 1;

Végül ez a sor engedélyezi az idegen kulcs megkötés ellenőrzési opciót.

Ez a kis szkript nagyon tetszett. Nagyon praktikus. Remélem, segít jobban megérteni a működését.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.