首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 修改資料庫名稱變通方案:RENAME DATABASE 移除後的最佳實踐

     編輯:MySQL 資料庫相關知識

MySQL 5.1 曾引入 RENAME DATABASE,但在 5.1.23 移除(實驗功能,未進入 GA)。生產環境需改名時,採用「建新庫 + RENAME TABLE 遷移」方案,操作原子、無鎖風險、秒級完成。

操作步驟

1. 建立新資料庫

CREATE DATABASE db_v2;

2. 產生 RENAME TABLE 批次腳本

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;
...

3. 執行遷移腳本

SOURCE /tmp/rename_to_db_v2.sql;

4. 驗證並清理

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 時代標準作法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved