Linux mini-howto?
Krátce o nástrojích ze života sysadmina.
Databáze MySQL/MariaDB je důvěrně známá a napříč opensource světem široce používaná, obsahuje dva jednoduché SQL příkazy DROP TABLE a DROP DATABASE pro smázení tabulky či celé db.
Bohužel/bohudík neexistuje žadný příkaz “DROP ALL TABLES” ve smyslu smaž všechny tabulky v aktuální db.
Když už narazíte na “zkryplený” návrh celé DB, kde si původní autor dohání potřebu řádků a relací množstvím a tabulek a jejich jméno používá jako klíč je na čase po notné dávce relaxační hudby vymyslet jak smazat těch 1146 tabulek, jasně můžete udělat drop databases a pak create database, ale třeba to zrovna takto nechcete/nemůžete.
Varianta 1. (ktéra se mi vůbec nelíbí zápisem, ale je elegantní)
SET FOREIGN_KEY_CHECKS = 0;
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables
FROM information_schema.tables
WHERE table_schema = 'database_name';
SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;
Varianta 2. (aneb plivneme si postaru unixovsky do dlaní)
# mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
Hotovo! Užívejte moudře a díky za pozornost.
František Havel, MOJEservery.cz