MySQL手册中有介绍。

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

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


当前回答

为了方便起见,下面是一个小shell脚本,必须使用两个参数执行:db-name和new db-name。

如果您不使用主目录中的.my.cnf文件,则可能需要在mysql行中添加登录参数。请在执行此脚本之前进行备份。


#!/usr/bin/env bash

mysql -e "CREATE DATABASE $2 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
for i in $(mysql -Ns $1 -e "show tables");do
    echo "$1.$i -> $2.$i"
    mysql -e "rename TABLE $1.$i to $2.$i"
done
mysql -e "DROP DATABASE $1"

其他回答

这里已经有很多非常好的答案,但我没有看到PHP版本。这将在大约一秒钟内复制一个800M DB。

$oldDbName = "oldDBName";
$newDbName = "newDBName";
$oldDB     = new mysqli("localhost", "user", "pass", $oldDbName);
if($oldDB->connect_errno){
    echo "Failed to connect to MySQL: (" . $oldDB->connect_errno . ") " . $oldDB->connect_error;
    exit;
}
$newDBQuery = "CREATE DATABASE IF NOT EXISTS {$newDbName}";
$oldDB->query($newDBQuery);
$newDB = new mysqli("localhost", "user", "pass");
if($newDB->connect_errno){
    echo "Failed to connect to MySQL: (" . $newDB->connect_errno . ") " . $newDB->connect_error;
    exit;
}

$tableQuery  = "SHOW TABLES";
$tableResult = $oldDB->query($tableQuery);
$renameQuery = "RENAME TABLE\n";
while($table = $tableResult->fetch_array()){
    $tableName = $table["Tables_in_{$oldDbName}"];
    $renameQuery .= "{$oldDbName}.{$tableName} TO {$newDbName}.{$tableName},";
}
$renameQuery = substr($renameQuery, 0, strlen($renameQuery) - 1);
$newDB->query($renameQuery);

如果你使用的是phpMyAdmin,那么你只需要到xamp中的mysql文件夹,关闭phpMyAdmin,然后重命名你看到的文件夹作为你的数据库名,然后重新启动你的phpMyAdmin。可以看到数据库重命名了。

模拟MySQL中缺少的RENAME DATABASE命令:

创建一个新数据库 创建重命名查询: SELECT CONCAT('RENAME TABLE ',table_schema,'. " ' ' TO ','new_schema. ",table_name,' ';') 从information_schema。表 WHERE table_schema LIKE 'old_schema'; 运行输出 删除旧数据库

这是从模拟MySQL中缺少的RENAME DATABASE命令。

你们这些家伙会为此开枪打死我的,很可能这不会每次都管用,当然,这违反了所有的逻辑……但我刚试过的是…停止MySQL引擎,以root身份登录,并在文件系统级别上简单地重命名数据库....

我在OSX上,只改变了情况,从bedbf到bedbf。令我惊讶的是,它竟然起作用了……

我不建议在生产DB上使用它。我只是做了个实验……

祝你好运! -)

在MySQL管理员中执行以下操作:

在Catalogs下,创建一个新的数据库模式。 转到备份并创建的备份 旧的模式。 执行备份。 转到恢复并打开文件 在步骤3中创建。 在目标下选择“另一个模式” 模式并选择新的数据库 模式。 开始恢复。 验证新模式,如果看起来 很好,删除旧的。