如何重命名MySQL数据库?
MySQL在线手册曾经提到RENAME DATABASE命令(这个文档页面已经被Oracle删除了):
这个语句是在MySQL 5.1.7中添加的,但被发现是危险的,在MySQL 5.1.23中被删除。
那么,如何继续? 基本原理:我们从项目的代码名称开始,现在希望数据库名称反映项目的明确名称。
从Ilan Hazan的这篇博客文章中:
在MySQL中,不支持数据库重命名。 为了重命名一个MySQL数据库,你可以执行以下操作之一:
创build新数据库并将旧数据库中的所有表重新命名为新数据库:
CREATE database new_db_name; RENAME TABLE db_name.table1 TO new_db_name, db_name.table2 TO new_db_name; DROP database db_name;
在Linux shell中,使用mysqldump备份旧数据库,然后使用MySQL实用程序以新名称恢复转储的数据库。 最后,使用drop database命令删除旧的数据库。 对于大型数据库,此选项可能执行得不好。
mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.sql mysql -uxxxx -pxxxx -h xxxx -e "CREATE DATABASE new_db_name" mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.sql mysql -uxxxx -pxxxx -h xxxx -e "DROP DATABASE db_name"
写一个简单的Linux脚本(我最喜欢的解决scheme)
#!/bin/bash mysqlconn="mysql -u xxxx -pxxxx -S /var/lib/mysql/mysql.sock -h localhost" olddb=xxxx newdb=xxxx #$mysqlconn -e "CREATE DATABASE $newdb" params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'") for name in $params; do $mysqlconn -e "RENAME TABLE $olddb.$name to $newdb.$name"; done; #$mysqlconn -e "DROP DATABASE $olddb"
如果您的所有表都是MyISAM,则可以重命名旧的数据库文件夹名称:
MySQL有点不好意思。 唯一可靠的解决scheme是使用phpMyAdmin
。
Login
– > 点击 Scheme
– > 点击 Operations
– >findRename database to:
– >写入新名称> 点击开始 。
就如此容易。 所有权限都被转移。
我倾向于创build一个新的数据库,然后将这些表从旧的数据库转储到.sql文件(使用mysqldump),编辑文件,做一些s/old_database/new_database/g
,然后重新导入到新的数据库。
可能不是最好的办法,但它确实有效。
我发现一个非常简单的解决scheme:closuresMySQL,重命名数据库目录并重新启动。 就这样!
如果您有SQL代码或数据引用旧名称是有点危险。 然后,在重新启动应用程序之前,还需要更改它。 但是我不需要那样做,但是YMV。
谷歌search给出了这样两个指针:
如果您有机会使用MySQLpipe理工具(例如phpMyAdmin),那么您可以在为您创build查询时轻松对其进行重命名。
在phpMyAdmin中,他们也创build每个表并通过“INSERT INTO … SELECT * FROM …”插入数据。 所以通过链接他们复制数据。
如果你不能做到这一点,我会build议做一个转储,并重新导入sql-file到一个新的数据库。
祝你好运!
问候,本。
我用下面的方法来重命名数据库
采用mysqldump或任何数据库工具,如heidiSQL,MySQLpipe理员等备份文件
在某些文本编辑器中打开备份(例如backupfile.sql)文件。
search并replace数据库名称并保存文件。
还原编辑的SQL文件