MySQL 5.1 曾引入 RENAME DATABASE,但在 5.1.23 移除(實驗功能,未進入 GA)。生產環境需改名時,採用「建新庫 + RENAME TABLE 遷移」方案,操作原子、無鎖風險、秒級完成。
CREATE DATABASE db_v2;
SELECT CONCAT('RENAME TABLE ', table_schema, '.', table_name, ' TO db_v2.', table_name, ';')
FROM information_schema.tables
WHERE table_schema = 'sbtest'
INTO OUTFILE '/tmp/rename_to_db_v2.sql';
輸出範例:
RENAME TABLE sbtest.t1 TO db_v2.t1; RENAME TABLE sbtest.t2 TO db_v2.t2; ...
SOURCE /tmp/rename_to_db_v2.sql;
SHOW TABLES FROM db_v2; DROP DATABASE sbtest; -- 確認無誤後刪除舊庫
RENAME TABLE 在 MySQL 內部僅修改資料字典元資料(.frm / InnoDB 字典),不搬移資料檔案,極快且原子。mysqldump + source 的長時間鎖表與匯入開銷。mysqldump 或複製傳輸檔案。INFORMATION_SCHEMA.VIEWS/ROUTINES/TRIGGERS)。SET FOREIGN_KEY_CHECKS=0。此方案為官方推薦的無 RENAME DATABASE 時代標準作法。