MySQL手册中有介绍。
通常我只是转储数据库并用一个新名称重新导入它。这不是非常大的数据库的一个选项。重命名数据库| SCHEMA} db_name TO new_db_name做坏事,只存在于少数版本中,总的来说是个坏主意。
这需要与InnoDB一起工作,InnoDB存储的东西与MyISAM非常不同。
MySQL手册中有介绍。
通常我只是转储数据库并用一个新名称重新导入它。这不是非常大的数据库的一个选项。重命名数据库| SCHEMA} db_name TO new_db_name做坏事,只存在于少数版本中,总的来说是个坏主意。
这需要与InnoDB一起工作,InnoDB存储的东西与MyISAM非常不同。
当前回答
这里已经有很多非常好的答案,但我没有看到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中重命名数据库时,它会创建一个转储,然后删除并使用新名称重新创建数据库。
我认为这个解决方案更简单,是一些开发人员提出的。phpMyAdmin对此有一个操作。
从phpMyAdmin中选择要选择的数据库。在选项卡中有一个叫做Operations,转到rename部分。这是所有。
正如许多人建议的那样,它使用新名称创建一个新数据库,将旧数据库的所有表转储到新数据库中,并删除旧数据库。
更新2022-09-22:MySQL 8.0+增加了一个更简单的解决方案:
不知道从什么时候开始添加RENAME TO关键字,但肯定更简单。不过在尝试之前,我会先把桌子备份一下,尤其是如果你的桌子很大的话。无论如何,它可以实现如下:
ALTER TABLE `schema_name`.`table_name`
RENAME TO `schema_name`.`new_table_name` ;
为了便于阅读,我把它分成了两行,但也可以写成单行,如下:
ALTER TABLE `schema_name`.`table_name` RENAME TO `schema_name`.`new_table_name` ;
我使用以下方法重命名数据库
使用mysqldump或任何数据库工具备份文件,如heidiSQL,mysql管理员等 在某些文本编辑器中打开备份(例如backupfile.sql)文件。 搜索并替换数据库名称并保存文件。
4.恢复已编辑的sql文件
这适用于所有数据库,通过使用maatkit mysql工具包重命名每个表
使用mk-find打印并重命名每个表。手册页有更多选项和示例
mk-find --dblike OLD_DATABASE --print --exec "RENAME TABLE %D.%N TO NEW_DATABASE.%N"
如果您安装了maatkit(这非常简单),那么这是最简单的方法。
步骤:
点击http://localhost/phpmyadmin/ 选择您的数据库 点击操作选项卡 将有一个选项卡作为“重命名数据库到”。添加新名称并勾选调整权限。 点击Go。