我需要在事先不知道名称的情况下删除数据库中的所有表。典型的过程是删除然后重新创建数据库,但这不是一个选项。最好的方法是什么?
Ang*_*ang 18
有一个更简单的 bash one-liner 使用 mysqldump(来自Thingy Ma Jig 博客)。
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
Run Code Online (Sandbox Code Playgroud)
如果您收到此错误:
ERROR 1217 (23000) at line 1: Cannot delete or update a parent row:
a foreign key constraint fails
Run Code Online (Sandbox Code Playgroud)
请尝试以下操作:
(echo 'SET foreign_key_checks = 0;';
(mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] |
grep ^DROP);
echo 'SET foreign_key_checks = 1;') | \
mysql -u[USERNAME] -p[PASSWORD] -b [DATABASE]
Run Code Online (Sandbox Code Playgroud)
现在它忽略了约束。