MySQL手册中有介绍。

通常我只是转储数据库并用一个新名称重新导入它。这不是非常大的数据库的一个选项。重命名数据库| SCHEMA} db_name TO new_db_name做坏事,只存在于少数版本中,总的来说是个坏主意。

这需要与InnoDB一起工作,InnoDB存储的东西与MyISAM非常不同。


当前回答

这是我在Windows上写的重命名数据库的批处理脚本:

@echo off
set olddb=olddbname
set newdb=newdbname
SET count=1
SET act=mysql -uroot -e "select table_name from information_schema.tables where table_schema='%olddb%'"
mysql -uroot -e "create database %newdb%"
echo %act%
 FOR /f "tokens=*" %%G IN ('%act%') DO (
  REM echo %count%:%%G
  echo mysql -uroot -e "RENAME TABLE %olddb%.%%G to %newdb%.%%G"
  mysql -uroot -e "RENAME TABLE %olddb%.%%G to %newdb%.%%G"
  set /a count+=1
 )
mysql -uroot -e "drop database %olddb%"

其他回答

当您在PHPMyAdmin中重命名数据库时,它会创建一个转储,然后删除并使用新名称重新创建数据库。

最简单的方法是使用HeidiSQL软件。它是免费的,开源的。它可以在Windows和任何带有Wine的Linux上运行(在Linux、BSD、Solaris和Mac OS X上运行Windows应用程序)。

这是HeidiSQL的下载,转到 http://www.heidisql.com/download.php。

下载Wine,请登录http://www.winehq.org/。

要在HeidiSQL中重命名数据库,只需右键单击数据库名称并选择“Edit”。然后输入一个新名称并按“OK”。

就是这么简单。

这适用于所有数据库,通过使用maatkit mysql工具包重命名每个表

使用mk-find打印并重命名每个表。手册页有更多选项和示例

mk-find --dblike OLD_DATABASE --print --exec "RENAME TABLE %D.%N TO NEW_DATABASE.%N"

如果您安装了maatkit(这非常简单),那么这是最简单的方法。

MySQL目前不支持通过其命令界面重命名数据库,但如果您可以访问MySQL存储数据库的目录,则可以重命名数据库。对于默认的MySQL安装,它通常在MySQL安装目录下的Data目录中。在Data目录下找到要重命名的数据库的名称并重命名它。不过,重命名目录可能会导致一些权限问题。请注意。

注意:在重命名数据库之前,必须停止MySQL

我建议创建一个新数据库(使用您想要的名称),并将所需的数据从旧数据库导出/导入到新数据库。很简单。

三个选项:

创建新数据库,关闭服务器,将文件从一个数据库文件夹移动到另一个数据库文件夹,然后重新启动服务器。注意,这只在所有表都是MyISAM的情况下才有效。 创建新的数据库,使用Create TABLE…LIKE语句,然后使用INSERT…从语句中选择*。 使用mysqldump并重新加载该文件。