mysql - 如何快速重命名sql数据库( 更改schema名字)?

  显示原文与译文双语对照的内容

http://dev.mysql.com/doc/refman/5.1/en/rename-database.html的MySQL手册覆盖了这个。

通常我只是转储数据库并用新名称重新导入。 对于大型数据库来说,这不是一个选项。 明显明显 RENAME {DATABASE | SCHEMA} db_name TO new_db_name;做了坏事,只存在于少数版本中,这是一个坏主意。

这就需要来处理 MySQL,可以存储方面做得相当不同于 MyISAM 。

时间:

对于 InnoDB,如下所示: 创建新的空数据库,然后将每个表重命名为新数据库:


RENAME TABLE old_db.table TO new_db.table;

你需要在这里之后调整权限。

使用以下几个简单命令


mysqldump -u username -p -v olddatabase> olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase <olddbdump.sql

或者减少IO使用如下 @Pablo Marin-Garcia建议


mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase

很抱歉,但我认为该解决方案来发布,这个旧线程比较简单,建议是由某些开发商。 phpMyAdmin对此操作有一个操作。

从phpMyAdmin选择要选择的数据库,在标签中有一个叫做操作,转到重命名部分。 那就是。

它所做的是尽可能多的建议,请创建一个新的数据库以新名字旧数据库的所有表转储到新的数据库,并删除旧的数据库。

enter image description here

生成一个SQL脚本,将源数据库中的每个表传输到目标数据库。

在运行从命令生成的脚本之前,你必须创建目标数据库。


SELECT concat('RENAME TABLE $1.',table_name, ' TO $2.',table_name, ';')
FROM information_schema.TABLES 
WHERE table_schema='$1';

( $1和 $2分别是源和目标)

这将生成一组SQL命令,然后你必须运行它们。

我最近才遇到了一个很好的方法来完成它,它使用了MyISAM和 InnoDB,并且非常快速:


RENAME TABLE old_db.table TO new_db.table;

我不记得我在哪里读到了它,但我的信用却指向别人。

简单的方法

更改为数据库目录:

 
cd/var/lib/mysql/

 

关闭 sql 。。这很重要 !


/etc/init.d/mysql stop

好的,这种方式不适用于InnoDB或者 BDB-Databases

重命名数据库:

 
mv old-name new-name

 

或者桌子。。


cd database/

mv old-name.frm new-name.frm

mv old-name.MYD new-name.MYD

mv old-name.MYI new-name.MYI

重新启动 MySQL


/etc/init.d/mysql start

完成。。

好的,这种方式不适用于 InnoDB or BDB-DBs 。 在这种情况下,你必须转储数据库和 re-import

我使用的是:


$ mysqldump -u root -p olddb> ~/olddb.sql
$ mysql -u root -p
mysql> create database newdb;
mysql> use newdb
mysql> source ~/olddb.sql
mysql> drop database olddb;

...