MySQL / MariaDB 重新命名資料庫

以前 MySQL 的 "RENAME DATABASE" 指令, 已經在 5.1.23 後的版本刪除, 原因是重新命名資料庫時存在資料遺失的風險。

以下示範用 "RENAME TABLE" 指令及 mysqldump 指令, 替資料庫重新命名的方法:

RENAME TABLE

這個方法適合資料庫比較大的情況, 但缺點是需要對每個資料表逐一執行。

先建立一個空白的資料庫, 名稱用要變更的資料庫名稱, 以下假設舊資料庫是 oldname; 新資料庫是 newname:


然後把資料表逐一用 RENAME 指令從 oldname 搬到 newname:


上面指令需要對每個資料表逐一執行。


如果不想逐個資料表執行, 可以使用以下指令, 它會從 "show tables" 讀取資料表列表, 然後自動執行 rename, 以下是例子需要將 "password" 修改成 mysql root 的密碼, 並將新、舊資料庫名稱改成實際需要:


mysqldump

如果資料庫不是很大, 可以用 mysqldump 指令完成:

$ mysqldump -u root -p -v oldname > oldname.sql
$ mysqladmin -u root -p create newname
$ mysql -u root -p newname < oldname.sql




Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.