MySQL手册中有介绍。
通常我只是转储数据库并用一个新名称重新导入它。这不是非常大的数据库的一个选项。重命名数据库| SCHEMA} db_name TO new_db_name做坏事,只存在于少数版本中,总的来说是个坏主意。
这需要与InnoDB一起工作,InnoDB存储的东西与MyISAM非常不同。
MySQL手册中有介绍。
通常我只是转储数据库并用一个新名称重新导入它。这不是非常大的数据库的一个选项。重命名数据库| SCHEMA} db_name TO new_db_name做坏事,只存在于少数版本中,总的来说是个坏主意。
这需要与InnoDB一起工作,InnoDB存储的东西与MyISAM非常不同。
当前回答
我是这样做的: 对现有数据库进行备份。它将为您提供一个db.zip.tmp,然后在命令提示符中写入以下内容
"C:\Program Files (x86)\MySQL\MySQL Server 5.6\bin\ MySQL .exe localhost -u root -p[password][新数据库名]< "C:\Backups\db.zip.tmp"
其他回答
似乎没有人提到这一点,但这里有另一种方式:
create database NewDatabaseName like OldDatabaseName;
然后对每个表执行:
create NewDatabaseName.tablename like OldDatabaseName.tablename;
insert into NewDataBaseName.tablename select * from OldDatabaseName.tablename;
然后,如果你想,
drop database OldDatabaseName;
这种方法的优点是可以在几乎为零的网络流量的情况下在服务器上完成整个传输,因此它比转储/恢复快得多。
如果你有存储过程/视图等,你可能也想要传输它们。
模拟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 Workbench中右键单击您的模式->单击创建模式->输入该模式的名称。
删除旧名称的旧模式。
你已经准备好摇滚....
注意:仅用于本地目的。不要尝试生产数据库表。创建了模式,但其中没有数据。所以要小心。
你可以使用这个shell脚本:
参考:如何重命名MySQL数据库?
#!/bin/bash
set -e # terminate execution on command failure
mysqlconn="mysql -u root -proot"
olddb=$1
newdb=$2
$mysqlconn -e "CREATE DATABASE $newdb"
params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES \
WHERE table_schema='$olddb'")
for name in $params; do
$mysqlconn -e "RENAME TABLE $olddb.$name to $newdb.$name";
done;
$mysqlconn -e "DROP DATABASE $olddb"
工作:
$ sh rename_database.sh oldname newname
I posted this How do I change the database name using MySQL? today after days of head scratching and hair pulling. The solution is quite simple export a schema to a .sql file and open the file and change the database/schema name in the sql CREAT TABLE section at the top. There are three instances or more and may not be at the top of the page if multible schemas are saved to the file. It is posible to edit the entire database this way but I expect that in large databases it could be quite a pain following all instances of a table property or index.