MySQL - 修改数据库名称

1.应用场景

主要用于修改数据库名字,同时保证数据不丢失.

2.学习/操作

mysql 的图像结果

 

1. 文档

mysql安全修改mysql数据库名几种方法_haiross的专栏-CSDN博客_mysql 修改数据库名

MySQL数据库修改库名的三种方法_Oracle_zsq的博客-CSDN博客_修改库名

2. 整理输出

Note

如果是MyISAM存储引擎那么可以直接去到数据库目录mv就可以。

只要修改DATA目录下面的那个库名的文件夹的名字即可.
 

如果是Innodb完全不行,会提示相关表不存在。

2.1 第一种方法:

5.1.7到5.1.23版本可用, 官方不推荐,会有丢失数据的危险 [如果没有数据或者数据不重要, 未尝不可]
RENAME database olddbname TO newdbname  --- MySQL 8.0.12 不支持

2.2 第二种方法:-- 很笨的办法, 但是安全, 不过当数据量比较大时不是很推荐.

1. 创建需要改成新名的数据库.
2. mysqldum 导出要改名的数据库.
3. 删除原来的旧库(确定是否真的需要)


当然这种方法虽然安全,但是如果数据量大,会比较耗时,同时还需要考虑到磁盘空间等硬件成本。

2.3 第三种方法:-- 本质上应是跟第三种方式差不多

直接跑一个shell脚本,内容如下:

#!/bin/bash
# 假设将db1数据库名改为db2

# MyISAM直接更改数据库目录下的文件即可

mysql -uroot -p123456 -e 'create database if not exists db2'
list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='db1'")

for table in $list_table
do
    mysql -uroot -p123456 -e "rename table db1.$table to db2.$table"
done

2.4 第四种方法:

转化思想, 先alter table 的存储引擎到MyISAM, 然后改了库目录的名字, 然后再改回来INNODB. // TBD

问题:

如果直接修改table的存储引擎,会有什么影响,

暂停使用数据库的情况下,与保持使用数据库的情况下

TBD

后续补充

...

3.问题/补充

1.以上方法, 实践验证, 只是新建空数据库, 修改数据库名.

因为没有数据表, 就没有所谓的存储引擎, 也就没有所谓的差别, 只能重新建一个新的数据库来解决?

4.参考

mysql安全修改mysql数据库名几种方法_haiross的专栏-CSDN博客_mysql 修改数据库名

MySQL数据库修改库名的三种方法_Oracle_zsq的博客-CSDN博客_修改库名

后续补充

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值