在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"
這裡用到了rename table更改表名的指令,但是如果新表名後面加資料庫,将會将原來的資料庫的表移動到新的資料庫,所有這種方法既安全又快速。
作者:Atlas
出處:Atlas的部落格 http://www.cnblogs.com/gomysql