1. ホーム
  2. マイスル

[解決済み】DROPデータベース権限なしで、コマンドラインからすべてのMySQLテーブルを削除する方法は?[重複している]。

2022-04-05 05:23:24

質問

WindowsのMySQLで、コマンドプロンプトを使ってすべてのテーブルをドロップするにはどうすればよいですか?これをしたい理由は、私たちのユーザーはデータベースを削除するアクセス権を持っていますが、データベース自体を再作成するアクセス権を持っていないため、手動でテーブルを削除する必要があるからです。一度にすべてのテーブルをドロップする方法はありますか?ほとんどのテーブルは外部キーでリンクされているので、特定の順序で削除する必要があることに留意してください。

解決方法は?

このようなステートメントを生成することができます。 DROP TABLE t1, t2, t3, ... を作成し、プリペアドステートメントを使用して実行します。

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'; -- specify DB name here.

SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;