如何快速重命名MySQL数据库(更改架构名称)?

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

发表评论