mysql database rename_mysql rename database

mysql  rename database

mysql在5.1.7中增加了rename database,由于其不安全性,在5.1.23中又取消了,日常工作中常遇到需要修改db名字的情况,整理下重命名一个数据库的方法。

1.    使用rename table。很多知道这样用:

rename table old_name to new_name

其实它还有一个功能:

rename table a.old_name to b.new_name

写一个存储过程就可以实现整个库的迁移,速度很快。

2.    使用mysqldump。先备份再导入新库,这应该是很常用的方法。

mysqldump–u–p–h db>db_dump.sql

mysql–u–p–h–e“create database new_db;source db_dump.sql;”#确认新库正常工作后mysql–u–p–e“drop database db”

3.    使用myisam表。全部都是myisam表或者alter table为myisam表。使用下面的步骤:

1.    停止mysql server

2.    重命名数据目录中数据库的文件目录名称3.    启动mysql server

用脚本或者存储过程实现复制和重命名db。将其中sql改为create table a as select * from b可实现db的复制。

点击(此处)折叠或打开

mysql>show create procedure p_db_renameG

***************************1.row***************************

Procedure:p_db_rename

sql_mode:

CreateProcedure:CREATE DEFINER=`root`@`%`PROCEDURE`p_db_rename`(inold_db varchar(45),innew_db varchar(45))

BEGIN

declare counts,finishedintdefault0;

declare tablename varchar(45)default'';

DECLARE cur1 CURSOR FOR SELECT table_namefrom`information_schema`.tableswheretable_schema=old_db;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished=1;

#SELECT COUNT(*) into counts FROM `information_schema`.tables WHERE table_schema=new_db;

OPEN cur1;

FETCH cur1 INTO tablename;

loop1:LOOP

IF finished=1 THEN

CLOSE cur1;

LEAVE loop1;

END IF;

select concat('rename table ',tablename,'...') as info ;

set @sql=concat('RENAME TABLE ',old_db,'.',tablename,' to ',new_db,'.',tablename);

prepare sqls from @sql;

execute sqls;

FETCH cur1 INTO tablename;

end loop;

END

character_set_client: utf8

collation_connection: utf8_general_ci

Database Collation: latin1_swedish_ci

1 row in set (0.00 sec)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值