Najprościej byłoby usunąć całą bazę i stworzyć ją ponownie:
mysql> DROP DATABASE nazwa_bazy; mysql> CREATE DATABASE nazwa_bazy;
Ale wtedy na nowo trzeba by było definiować uprawnienia użytkowników tej bazy.
Chciałoby się, żeby zadziałało coś takiego:
mysql> DROP TABLE IN (SHOW TABLES);
Ale Computer says No!:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'IN (SHOW TABLES)\' at line 1
Pogrzebałem w Internecie i znalazłem takie rozwiązanie:
$ mysqldump --no-data --add-drop-table nazwa_bazy | grep ^DROP | mysql -v nazwa_bazy
Ale wszystko się tutaj sypie, kiedy doda się nazwę użytkownika i opcję pytania o hasło:
$ mysqldump -u nazwa_użytkownika -p --add-drop-table --no-data nazwa_bazy | grep ^DROP | mysql -u nazwa_użytkownika -p nazwa_bazy
Enter password: Enter password:
ERROR 1045 (28000): Access denied for user \'nazwa_użytkownika\'@\'localhost\' (using password: NO)
Oczywiście mógłbym podać hasło w wierszu polecenia, ale to zbyt ryzykowne, bo później to hasło będzie do znalezienia w historii poleceń:
$ history | grep mysql
1035 mysqldump -u nazwa_użytkownika -ptajneHaslo --add-drop-table --no-data nazwa_bazy | grep ^DROP | mysql -u nazwa_użytkownika -ptajneHaslo nazwa_bazy
Na coś takiego nie pójdę.
Zostało mi tylko rozbić zadanie na kilka poleceń:
$ mysqldump -u nazwa_użytkownika -p --add-drop-table --no-data nazwa_bazy | grep ^DROP > drop.sql $ mysql -u nazwa_użytkownika -p nazwa_bazy < drop.sql $ rm drop.sql
Działa? Działa! No i fajnie.