Mysql
如何重命名 MySQL 數據庫?
如何重命名 MySQL 數據庫?
MySQL 線上手冊中提到了 RENAME DATABASE 命令(該文件頁面已被 Oracle 前段時間刪除):
此語句在 MySQL 5.1.7 中添加,但被發現有危險並在 MySQL 5.1.23 中刪除。
那麼,如何進行呢?理由:我們從項目的代號開始,現在希望數據庫名稱能夠反映項目的最終名稱。
來自Ilan Hazan 的這篇博文:
在 MySQL 中,不支持數據庫重命名。為了重命名 MySQL 數據庫,您可以執行以下操作之一:
- 創建新數據庫並將舊數據庫中的所有表重命名為新數據庫:
CREATE database new_db_name; RENAME TABLE db_name.table1 TO new_db_name.table1, db_name.table2 TO new_db_name.table2; DROP database db_name;
- 在 Linux shell 中,使用 mysqldump 備份舊數據庫,然後使用 MySQL 實用程序以新名稱恢復轉儲的數據庫。最後,使用 drop database 命令刪除舊數據庫。對於大型數據庫,此選項可能會執行得很差。
mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.sql mysql -uxxxx -pxxxx -h xxxx -e "CREATE DATABASE new_db_name" mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.sql mysql -uxxxx -pxxxx -h xxxx -e "DROP DATABASE db_name"
- 編寫一個簡單的 Linux 腳本(我最喜歡的解決方案)
#!/bin/bash dbuser=xxxx dbpass=xxxx olddb=xxxx newdb=xxxx mysqlconn="mysql -u $dbuser -p$dbpass -h localhost" $mysqlconn -e "CREATE DATABASE $newdb" params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'") for name in $params; do $mysqlconn -e "RENAME TABLE $olddb.$name to $newdb.$name"; echo "Renamed $olddb.$name to $newdb.$name"; done; #$mysqlconn -e "DROP DATABASE $olddb"
如果您所有的表都是 MyISAM,您可以重命名舊的數據庫文件夾名稱:
關閉 MySQL 伺服器,
將數據庫文件夾名稱重命名為新名稱,
啟動 MySQL 伺服器。