如何使用 MySQL 更改数据库名称?

Posted

技术标签:

【中文标题】如何使用 MySQL 更改数据库名称?【英文标题】:How do I change the database name using MySQL? 【发布时间】:2013-11-17 08:02:19 【问题描述】:

如何更改我的数据库的数据库名称?

我尝试使用重命名数据库命令,但是关于它的文档上说使用它很危险。那么我应该怎么做才能重命名我的数据库名称呢?

例如,如果我想将我的数据库重命名为这个。

database1 -> database2?

【问题讨论】:

请参考以下链接:***.com/questions/12190000/rename-mysql-database 啊,好吧,所以没有代码。所以我只需要转储我的数据库并重命名它。谢谢 是的,这是一个更好的主意,也请查看***.com/questions/67093/… 【参考方案1】:

你可以使用下面的命令

alter database Testing modify name=LearningSQL;
Old Database Name = Testing,
New Database Name = LearningSQL

【讨论】:

【参考方案2】:

InnoDB 支持 RENAME TABLE 语句将表从一个数据库移动到另一个数据库。为了以编程方式使用它并用大量表重命名数据库,我编写了几个程序来完成这项工作。 你可以在这里查看 - SQL script @Gist

要使用它,只需调用 renameDatabase 过程。

CALL renameDatabase('old_name', 'new_name');

在 MariaDB 上测试,应该可以在所有使用 InnoDB 事务引擎的 RDBMS 上完美运行。

【讨论】:

【参考方案3】:

转到数据目录并尝试以下操作:

mv database1 database2 

它适用于 900 MB 的数据库大小。

【讨论】:

【参考方案4】:

“只要两个数据库在同一个文件系统上,就可以使用 RENAME TABLE 将表从一个数据库移动到另一个”

-- ensure the char set and collate match the existing database.
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';


CREATE DATABASE `database2` DEFAULT CHARACTER SET = `utf8` DEFAULT COLLATE = `utf8_general_ci`;
RENAME TABLE `database1`.`table1` TO `database2`.`table1`;
RENAME TABLE `database1`.`table2` TO `database2`.`table2`;
RENAME TABLE `database1`.`table3` TO `database2`.`table3`;

http://dev.mysql.com/doc/refman/5.7/en/rename-table.html

【讨论】:

这是重命名表,而不是重命名数据库。 是的,但最终结果是一样的。您的所有数据最终都在一个新数据库中,您无需重新加载它。注意新旧数据库需要在同一个逻辑磁盘上。 我喜欢这个主意。诚然,它没有回答 OP 的原始问题,但它确实提供了一种机制,允许 OP 做他们想做的事。假设数据库在数十个表中有数十万行,它可能会快很多。对我来说肯定是这样的,数据库包含三个表,其中有 200 万行。【参考方案5】:

按照以下步骤:

shell> mysqldump -hlocalhost -uroot -p  database1  > dump.sql

mysql> CREATE DATABASE database2;

shell> mysql -hlocalhost -uroot -p database2 < dump.sql

如果你想删除 database1,否则离开它。

mysql> DROP DATABASE database1;

注意:shell>表示命令提示符,mysql>表示mysql提示符。

【讨论】:

感谢您提供详细的解决方案,而不是说为什么做不到 请注意,需要将特定用户权限读取到新数据库中。 别忘了使用以管理员身份运行打开cmd。否则你会得到access denied。 这应该是公认的答案。它只是遗漏了这句话,“你不能真正重命名一个mysql数据库,你必须复制它并删除原来的”,但这在其他答案中已经大量表达了。【参考方案6】:

另一种重命名数据库或获取数据库映像的方法是使用数据库选项卡中的逆向工程选项。它将为数据库创建一个ER 图表。在那里重命名架构。

之后,进入文件菜单,然后去导出和转发数据库。

然后就可以导入数据库了。

【讨论】:

MySQL Workbench 将是他引用的工具的名称。【参考方案7】:

您可以使用 MySQL 界面更改数据库名称。

转到http://www.hostname.com/phpmyadmin

转到要重命名的数据库。接下来,转到操作选项卡。在那里您将找到重命名数据库的输入字段。

【讨论】:

【参考方案8】:

试试:

RENAME database1 TO database2;

【讨论】:

我试过了,但是在我阅读的文档中,如果执行此代码,您可能会丢失数据。 这是通用语法,但最好还是删除数据库并创建一个新数据库。 谢谢。这是最好的解决方案。 这条语句 RENAME DATABASE 语法是在 MySQL 5.1.7 中添加的,但被发现是危险的并在 MySQL 5.1.23 中被删除【参考方案9】:

我认为这是不可能的。

您可以使用mysqldump 转储数据,然后使用您的新名称创建架构,然后将数据转储到该新数据库中。

【讨论】:

感谢您的回复。 :)【参考方案10】:

我同意上述答案和提示,但有一种方法可以使用 phpmyadmin 更改数据库名称

重命名数据库 在 cPanel 中,单击 phpMyAdmin。 (它应该在新选项卡中打开。) 在左侧栏中单击要重命名的数据库。 单击操作选项卡。 在显示“将数据库重命名为:”的地方输入新的数据库名称。 单击“开始”按钮。 当它询问您是否要创建新数据库并删除旧数据库时,单击“确定”继续。 (这是确保您正确拼写新名称的好时机。) 操作完成后,当系统询问您是否要重新加载数据库时,单击“确定”。

这是视频教程:

http://support.hostgator.com/articles/specialized-help/technical/phpmyadmin/how-to-rename-a-database-in-phpmyadmin

【讨论】:

【参考方案11】:

经过多次恶化,这就是我发现“简单”的工作方式。 首先,我使用的是 MYSQL Workbench,并且导入无法正常工作,因为导入转储文件将始终恢复为原始模式名称。 我花了几个小时尝试每件事都无济于事,都是因为拼写错误。 我通过在笔记本中打开一个 .sql 转储文件并手动编辑模式名称的拼写错误来解决该问题,注意重命名所有实例模式名称开头有三个,保存文件然后导入。这对我来说非常有效,希望它能帮助其他人寻找更改数据库名称/模式名​​称的简单答案。 我发现的另一个提示是正确的,当程序不按照他们应该去的“源”字面查找源代码时。 希望这可以帮助某人

低代表,所以他们不会让我评论之前/之后的答案(它不断改变排名或位置),所以我在这里添加了它。只要服务器表中没有数据,逆向工程就可以正常工作。如果数据存在,并且您在更改名称后尝试更新服务器,它将导致错误或只是创建一个没有数据的新数据库/模式,我知道我尝试了十次无济于事。 以上工作简单,避免了头痛,因为可以查看 SQL 代码以查找其他错误(如果有)或更改表名或创建数据。 .sql 文件只是一个编译好的 SQL 代码,因此理论上可以通过 PHP 或数据库管理工具的脚本控制台复制和添加它。

【讨论】:

【参考方案12】:

不幸的是,MySQL 没有明确支持(除了再次转储和重新加载数据库)。

来自http://dev.mysql.com/doc/refman/5.1/en/rename-database.html:

13.1.32。重命名数据库语法

重命名 数据库 | SCHEMA db_name TO new_db_name;

此语句在 MySQL 5.1.7 中添加,但被发现有危险并在 MySQL 5.1.23 中删除。 ...使用此语句可能会导致数据库内容丢失,这就是它被删除的原因。不要在它存在的早期版本中使用 RENAME DATABASE。

【讨论】:

感谢您的提示。我正要重命名数据库,然后看到您的回答。你能建议任何解决方法吗?我刚刚导入了 4gb 数据库并想重命名它。不想重新导入它,因为它需要这么多时间。

以上是关于如何使用 MySQL 更改数据库名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改mysql数据库引擎

计算机名称更改后,软件无法连接SQL数据库!急求!

如何更改Mysql 表字段为unique

如何使用 liquibase 更改架构名称

如何在 MySQL 中使用注册词

如何使用phpmyadmin管理mysql数据库