通常我打开 Terminal.app 并连接到远程 MySQL 数据库。
然后我使用此命令删除一个表:
mysql> drop table [table name];
但我需要的是命令行来删除数据库中的所有表。
如果我使用:
mysql> drop database [database name];
我将彻底破坏数据库,并且无法再次创建表。对吗?
答案1
您可以删除数据库然后立即重新创建它:
mysql> drop database [database name];
mysql> create database [database name];
答案2
您可以尝试以下命令:
mysqldump --no-data --add-drop-table DB_NAME | grep ^DROP | mysql -v DB_NAME
或者:
mysql --silent --skip-column-names -e "SHOW TABLES" DB_NAME | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -v DB_NAME
DB_NAME
您的数据库名称在哪里。您可以在命令中指定~/.my.cnf
或将其添加到命令中(例如-uroot -proot
)。
如果您的数据库用户没有权限删除数据库,则此方法比删除并创建数据库有一些优势。
答案3
mysql -u USERHERE -pPASSWORDHERE --silent --skip-column-names -e "SHOW TABLES" DATABASENAMEHERE | xargs -L1 -I% echo 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE
%; SET FOREIGN_KEY_CHECKS = 1;' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE