MySQL Table Space 내 모든 테이블 삭제하기

MySQL 의 테이블 스페이스는 놔두고 그 안의 모든 table 만 삭제하는 방법.


삭제 코드

다음 코드를 drop_table.sql 이라는 파일로 저장합니다.

drop_table.sql
SET FOREIGN_KEY_CHECKS = 0;
SET GROUP_CONCAT_MAX_LEN=32768;
SET @tables = NULL;
SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables
  FROM information_schema.tables
  WHERE table_schema = (SELECT DATABASE());
SELECT IFNULL(@tables,'dummy') INTO @tables;

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


실행

mysql command client 에서 삭제하려는 계정(Ex: user) 과 암호(Ex: secret), 테이블 스페이스를 입력하고 입력 파이프로 drop_table.sql 파일을 지정하면 모든 테이블이 삭제됩니다.

mysql -u user -psecret table_space < drop_table.sql


같이 보기


Ref