在Innodb數(shù)據(jù)庫(kù)引擎下修改數(shù)據(jù)庫(kù)名的方式與MyISAM引擎下修改數(shù)據(jù)庫(kù)的方式完全不一樣,如果是MyISAM可以直接去數(shù)據(jù)庫(kù)目錄中mv就可以,Innodb如果用同樣的方法修改會(huì)提示相關(guān)表不存在。
第一種方法:
rename database olddbname to newdbname
這個(gè)是5.1.7到5.1.23版本可以用,但是官方不推薦,會(huì)有丟失數(shù)據(jù)的危險(xiǎn)
第二種:
1.創(chuàng)建需要改成新名的數(shù)據(jù)庫(kù)
2.mysqldum到處要改名的數(shù)據(jù)庫(kù)
3.刪除原來的舊庫(kù)
這種方法是安全的,但是如果數(shù)據(jù)量大,會(huì)很耗時(shí)
3.第三種:
- #!/bin/bash
- # 假設(shè)將sakila數(shù)據(jù)庫(kù)名改為new_sakila
- # MyISAM直接更改數(shù)據(jù)庫(kù)目錄下的文件即可
-
- 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更改表名的命令,但是如果新表名后面加數(shù)據(jù)庫(kù),將會(huì)將原來的數(shù)據(jù)庫(kù)的表移動(dòng)到新的數(shù)據(jù)庫(kù),所有這種方法既安全又快速。