Astăzi am avut nevoie să elimin toate tabelele din MySQL. Serverul de producție nu are phpMyAdmin, care este instrumentul meu preferat în mediul meu de dezvoltare pentru a gestiona bazele de date MySQL. Așa că am rămas blocat cu consola MySQL și aveam nevoie de o modalitate ușoară de a face treaba.
Cum spun întotdeauna „Google it”.
Am găsit un script elegant pe SOW. În acest articol, voi descrie ce face linie cu linie.
SET FOREIGN_KEY_CHECKS = 0;
Această linie dezactivează constrângerile de cheie externă. Dacă două tabele sunt asociate una cu cealaltă, atunci nu puteți renunța la niciuna dintre ele. Constrângerea de cheie externă nu vă permite să faceți acest lucru.
SET GROUP_CONCAT_MAX_LEN=32768;
Această linie stabilește lungimea maximă a funcției CONCAT. În următoarele linii ale scriptului, veți vedea o concatenare. În unele configurații MySQL, această valoare poate fi prea mică. Deci, pentru a evita posibilele erori, o setăm suficient de mare.
SET @tables = NULL;
Aceasta este variabila în care stocăm numele tabelelor.
SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables FROM information_schema.tables WHERE table_schema = (SELECT DATABASE());
Amintiți-vă că toate schemele dvs. mysql sunt stocate în baza de date information_schema. SELECT DATABASE() este utilizat pentru a determina baza de date utilizată în prezent. Această linie selectează lista de tabele din baza de date curentă și le decorează cu caracterul (`), iar rezultatul final va fi stocat în variabila tables astfel: `table_1`, `table_2`, …, `table_n`.
SELECT IFNULL(@tables,'dummy') INTO @tables;
Această linie pune „dummy” în variabila tables dacă variabila este NULL. Această linie se asigură că variabila tables nu este niciodată NULL.
SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);
Această linie adaugă „DROP TABLE IF EXISTS” înaintea variabilei tables. Astfel, rezultatul final va fi DROP TABLE IF EXISTS `table_1`, `table_2`, …, `table_n`.
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Nu este nevoie să separați aceste trei linii. Aceste linii execută propoziția SQL din variabila tables.
SET FOREIGN_KEY_CHECKS = 1;
În cele din urmă, această linie activează opțiunea de verificare a constrângerii foreign key.
Mi-a plăcut foarte mult acest mic script. Este foarte la îndemână. Sper că vă ajută să înțelegeți mai bine cum funcționează.
.