MySQL數據庫改名的三種方法


前不久去面試,被問到Innodb引擎的表如何改數據庫名,當時我也只回答了MyISAM改如何操作,被一些細節問題打敗,真是操蛋。

如果表示MyISAM那么可以直接去到數據庫目錄mv就可以。

Innodb完全不行,自己測試過,會提示相關表不存在。

第一種方法:

RENAME database olddbname TO newdbname
這個是5.1.7到5.1.23版本可以用的,但是官方不推薦,會有丟失數據的危險
 
第二種方法:
1.創建需要改成新名的數據庫。
2.mysqldum 導出要改名的數據庫
3.刪除原來的舊庫(確定是否真的需要)
當然這種方法雖然安全,但是如果數據量大,會比較耗時,哎,當時連這種方法都沒有想到,真有想死的沖動。
 
第三種方法:
我這里就用一個腳本,很簡單,相信大家都看的懂
復制代碼
#!/bin/bash
# 假設將sakila數據庫名改為new_sakila
# MyISAM直接更改數據庫目錄下的文件即可

mysql -uroot -p123456 -e 'create database if not exists new_sakila'
list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='sakila'")

for table in $list_table
do
    mysql -uroot -p123456 -e "rename table sakila.$table to new_sakila.$table"
done
復制代碼
這里用到了rename table,改表名的命令,但是如果新表名后面加數據庫名,就會將老數據庫的表移動到新的數據庫,所以,這種方法即安全,又快速。


作者:Atlas

出處:Atlas的博客 http://www.cnblogs.com/gomysql

您的支持是對博主最大的鼓勵,感謝您的認真閱讀。本文版權歸作者所有,歡迎轉載,但請保留該聲明。如果您需要技術支持,本人亦提供有償服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM