27

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

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

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

database1 -> database2?
4

12 回答 12

40

请按照以下步骤操作:

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 提示符。

于 2016-09-17T07:46:24.043 回答
20

我不认为这是可能的。

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

于 2013-11-06T07:16:31.910 回答
16

不幸的是,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。

于 2013-11-06T07:18:04.260 回答
5

“只要两个数据库在同一个文件系统上,您就可以使用 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

于 2017-01-17T21:31:58.687 回答
4

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

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

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

于 2013-11-06T07:22:29.900 回答
1

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

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

这是视频教程:

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

于 2014-10-22T07:49:33.230 回答
1

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

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

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

在 MariaDB 上进行了测试,应该可以在所有使用 InnoDB 事务引擎的 RDBMS 上理想地工作。

于 2020-04-16T11:25:34.923 回答
0

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

之后,转到“文件”菜单并转到导出和正向工程数据库。

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

于 2014-03-07T08:59:33.783 回答
0

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

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

于 2014-04-20T14:44:51.217 回答
-1

您可以使用以下命令

alter database Testing modify name=LearningSQL;
Old Database Name = Testing,
New Database Name = LearningSQL
于 2017-09-25T12:07:12.313 回答
-4

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

mv database1 database2 

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

于 2018-05-18T07:51:26.347 回答
-5

尝试:

RENAME database1 TO database2;
于 2013-11-06T07:10:25.057 回答