如何重命名 MySQL 数据库?

nal*_*ply 61 mysql

如何重命名 MySQL 数据库?

MySQL 在线手册中曾说过 RENAME DATABASE 命令(此文档页面已被 Oracle 删除了一段时间):

该语句是在 MySQL 5.1.7 中添加的,但被发现是危险的,并在 MySQL 5.1.23 中删除。

那么,如何进行呢?理由:我们从项目的代号开始,现在希望数据库名称能够反映项目的明确名称。

ale*_*eit 72

来自Ilan Hazan 的这篇博文:

在 MySQL 中,不支持数据库重命名。要重命名 MySQL 数据库,您可以执行以下操作之一:

  1. 创建新数据库并将旧数据库中的所有表重命名为新数据库:

     CREATE database new_db_name;
     RENAME TABLE db_name.table1 TO new_db_name.table1, db_name.table2 TO new_db_name.table2;
     DROP database db_name;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在 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"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 编写一个简单的 Linux 脚本(我最喜欢的解决方案)

     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"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果你所有的表都是 MyISAM,你可以重命名旧的数据库文件夹名称:

    1. 关闭 MySQL 服务器,
    2. 将数据库文件夹名称重命名为新名称,
    3. 启动 MySQL 服务器。

  • 这将有助于为第一个解决方案创建查询。只需将粘贴结果复制到 RENAME TABLE `SELECT CONCAT('olddb.', TABLE_NAME, ' TO newdb.', TABLE_NAME, ',') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='olddb';`; (2认同)

小智 13

MySQL 有点糟透了。唯一可靠的解决方案是使用phpMyAdmin.

Login--> click Scheme--> click Operations--> 查找Rename database to:--> 写NewName> click Go.

就如此容易。所有权限都被继承。

  • +1 对于 GUI 解决方案,但社区 wiki 答案中的简单命令和脚本也非常“可靠” (7认同)

nal*_*ply 7

我找到了一个非常简单的解决方案:关闭MySQL,重命名数据库目录并重新启动。就这样!

如果您有引用旧名称的 SQL 代码或数据,这有点危险。然后,您还需要在重新启动应用程序之前对其进行更改。但我不需要这样做,而是 YMV。

谷歌搜索给出了以下两个提示:

/sf/ask/4696541/

http://www.delphifaq.com/faq/databases/mysql/f574.shtml


Tom*_*nor 5

我倾向于创建一个新数据库,然后将旧数据库中的表转储到 .sql 文件(使用 mysqldump)中,编辑该文件,执行某种操作s/old_database/new_database/g,然后将其重新导入到新数据库中。
可能不是最好的方法,但它确实有效。