MySQL的MySQL手册介绍了这一点
通常我只是转储数据库并用新名称重新导入它。对于非常大的数据库,这不是一个选项。显然将{DATABASE | SCHEMA}db_名称重命名为新的db_名称做坏事,只存在于少数版本中,总体来说是个坏主意
这需要与InnoDB合作,InnoDB的存储方式与MyISAM非常不同
对于InnoDB,以下操作似乎有效:创建新的空数据库,然后依次将每个表重命名为新数据库:
将旧表\u db.TABLE重命名为新表;
之后,您需要调整权限
对于在shell中编写脚本,可以使用以下任一方法:
mysql-u username-ppassword old_db-sNe“show tables”|读取table
do mysql-u username-ppassword-sNe“将表old_db.$table重命名为new_db.$table”;完成
或
对于'mysql-u root-ppassword-s-N-e“使用旧数据库;显示旧数据库中的表;”;mysql-u root-ppassword-s-N-e是否“使用旧的_db;将表old_db.$table重命名为新的_db.$table;”;完成;
注:
- 选项
-p
和密码之间没有空格。如果数据库没有密码,请删除-u username-ppassword
部分 -
如果某个表有触发器,则无法使用上述方法将其移动到另一个数据库(将导致
触发器出现错误模式
错误)。如果是这种情况,请使用传统方法克隆数据库,然后删除旧数据库:mysqldump旧数据库| mysql新数据库
-
如果您有存储过程,可以在以后复制它们:
mysqldump-R old_db|mysql new_db