すべてのテーブルを削除するスクリプトがあります。
SET FOREIGN_KEY_CHECKS = 0;
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables
FROM information_schema.tables
WHERE table_schema = 'mydb';
SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;
少なくとも1つのテーブルが存在する場合、完全に機能するのは1回だけです。2回目の実行でエラーが発生します:
SQL 構文にエラーがあります。1行目のSQL.sql 9 1の近くで「NULL」を使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。
IF ステートメントを使用しようとしていますが、まだ機能しません。
IF @tables IS NOT NULL THEN
SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の SQL.sql 8 1 の近くで 'if @tables IS NOT NULL THEN SET @tables = CONCAT('DROP TABLE ', @tables)' を使用する正しい構文を確認してください。
この場合、IF を使用する正しい方法は何ですか?