MySQL的数据库不能重命名问题处理方法

对于MySQL数据库,并未提供修改库名的SQL方法,那如何修改库名呢?处理方法如下:

1、重命名旧库下边的所有表到新库:

create databases `test2`;

RENAME TABLE `test1`.`t_user` TO `test2`.`t_user`;

使用如下SQL导出上述SQL:

SELECT CONCAT('RENAME TABLE `test1`.`',TABLE_NAME,'` TO `test2`.`',TABLE_NAME,'`;') as statement 
from `information_schema`.`TABLES` where  TABLE_SCHEMA='test1';

使用shell脚本如下:

#!/bin/bash

HOST='localhost'
PORT='3306'
USER='root'
PASS='123456'
OLD_DB='tang'
NEW_DB='test'

if [ -z "$PASS" ]
then
     mysqlconn="mysql -h ${HOST} -P ${PORT} "
else
    mysqlconn="mysql -u\"${USER}\" -p\"${PASS}\"  -h ${HOST} -P ${PORT} "
fi

echo "$mysqlconn -e 'CREATE DATABASE if not exists ${NEW_DB};'"
eval "$mysqlconn -e 'CREATE DATABASE if not exists ${NEW_DB};'"

echo "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='${OLD_DB}' and TABLE_TYPE!='VIEW' "
params=$($mysqlconn -BN -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='${OLD_DB}' and TABLE_TYPE!='VIEW' ")
for name in $params; do
    echo "$mysqlconn -e 'RENAME TABLE ${OLD_DB}.${name} to ${NEW_DB}.${name};'"
        eval "$mysqlconn -e 'RENAME TABLE ${OLD_DB}.${name} to ${NEW_DB}.${name};'"
done;

echo "$mysqlconn -e 'DROP DATABASE ${OLD_DB};'"
eval "$mysqlconn -e 'DROP DATABASE ${OLD_DB};'"

echo "over!"

2、建新库,使用mysqldump工具导出老库数据并导入新库

mysqldump -u user -ppass -h host -P port --single-transaction old_db >old_db.sql
mysql  -u user -ppass -h host -P port -e "create database new_db"
mysql  -u user -ppass -h host -P port new_db < old_db.sql
mysql  -u user -ppass -h host -P port -e "drop database old_db"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值