原文:三种方式修改 MySQL 数据库名

在 Innodb 数据库引擎下修改数据库名的方式与 MyISAM 引擎下修改数据库的方式完全不一样,如果是 MyISAM 可以直接去数据库目录中 mv 就可以,Innodb 如果用同样的方法修改会提示相关表不存在。

第一种方法:

rename database olddbname to newdbname

这个是 5.1.7 到 5.1.23 版本可以用,但是官方不推荐,会有丢失数据的危险

第二种方法:

  1. 创建需要改成新名的数据库

  2. mysqldum 导出要改名的数据库

  3. 删除原来的旧库

这种方法是安全的,但是如果数据量大,会很耗时

第三种方法(推荐):

使用 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 更改表名的命令,但是如果新表名后面加数据库,将会将原来的数据库的表移动到新的数据库,所有这种方法既安全又快速,推荐!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐