在 Innodb 数据库引擎下修改数据库名的方式与 MyISAM 引擎下修改数据库的方式完全不一样,如果是 MyISAM 可以直接去数据库目录中 mv 就可以,Innodb 如果用同样的方法修改会提示相关表不存在。
rename database olddbname to newdbname
这个是 5.1.7 到 5.1.23 版本可以用,但是官方不推荐,会有丢失数据的危险
创建需要改成新名的数据库
mysqldum 导出要改名的数据库
删除原来的旧库
这种方法是安全的,但是如果数据量大,会很耗时
使用 shell 脚本创建新数据库,并快速将旧库的表变更到新库
#!/bin/bash
## 假设将 sakila 数据库名改为 new_sakila
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 更改表名的命令,但是如果新表名后面加数据库,将会将原来的数据库的表移动到新的数据库,所有这种方法既安全又快速,推荐!
via:https://blog.csdn.net/eacxzm/article/details/84945714