需求:如何将mysql的库进行重命名?
方法一:
RENAME DATABASE old_database TO new_database;
⚠️ 该方法在某些版本中不可用,谨慎使用!
方法二:新建库,重命名数据库里面的所有表,再删除旧库
CREATE DATABASE new_db_name; 创建新的数据库
RENAME TABLE db_name.table1 TO new_db_name.table1; 对所有的表进行重命名
DROP DATABASE db_name; 删除原来的数据库
用到了rename table,改表名的命令。如果新表名后面加数据库名,就会将老数据库的表移动到新的数据库。
该种方法需要写一个脚本,将库里面的表进行遍历重命名。
方法三:通过mysqldump进行数据库的备份再导入
1、首先将旧库导出。
MYSQLDUMP -uroot -p123456 --databases old_db >/tmp/db_out.sql
2、然后再新建库以后用source进行导入
CREATE wan_da_xin_prod;
USE wan_da_xin_prod;
SOURCE /tmp/db_out.sql;
问题出现: source 无法正确导入😭
在应用第三种方法时,切换到了新库后再使用source命令,但是依然会将旧库的表导入到旧库中。也就是db_out库的表还是会导入到old_db库里面去。
问题解决:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `wan_da_xin_prod`
/*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE
utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `wan_da_xin_prod`;
使用sudo nano db_out.sql
将sql脚本中的数据库名称修改后,再次地使用source导入就没有问题了。
总结:
当数据库较大的时候,第三种方法耗时耗力,但是对于数据量小的时候还是比较合适的;我看网上的对第三种方法的文章比较多,但是没有提到我遇到的问题,因此特地在此记录一下。
如果您觉得上面的内容对您有帮助欢迎点赞、评论、转发!
更多内容请查阅作者博客:https://jiaruiblog.com
或者star
作者github: https://github.com/Jarrettluo?tab=repositories
网友评论