如何在MySQL中重命名模式(schema)

36

你好,我正在使用mysql 5.0.x

如何重命名模式?

3个回答

73

不要使用RENAME DATABASE!!!

早期的5.1版本有这个命令,但由于可能会破坏数据而被删除了(参考资料)。

目前唯一的方法是

mysqladmin create new_db_name
mysqldump db_name | mysql new_db_name

正如在这里所提到的

编辑:显然,一旦这个问题被修复,这个答案就会过时。


从我的旧架构中转储内容并导入到新架构(如上所述)可以传输我的表和视图,但不包括函数! - sbrbot
1
如果需要用户名和密码,可以修改为:mysqladmin -u root -pmypassword create new_db_name,然后是 mysqldump -u root -pmypassword db_name | mysql -u root -pmypassword new_db_name。如果需要重命名而不是复制,请使用 mysqladmin -u root -pmypassword drop db_name 完成操作。 - Steve Chambers
数据库字符集也没有被转移。例如,我的旧数据库的字符集是utf8,而新数据库是latin1。 - Hussain

4
很简单。将数据库导出为文件,然后在workbench中再次导入它,你可以在那里指定数据库的名称。
在工作台中,转到服务器选项卡,选择数据导出。 选择要重命名的数据库,选择导出到自包含的文件,并给文件命名。确保选择了转储结构和数据。点击开始导出。
在工作台中,转到服务器选项卡,选择数据导入。 选择从自包含文件导入。选择您创建的文件。 在标题为默认模式导入处,点击新选项。 输入新的数据库名称,然后从下拉列表中选择它。 点击开始导入。
完成了,具有您想要的名称以及旧数据库中的所有表和数据的新数据库。

-7
在5.0版本以下,您需要将数据库转储并重新加载到具有新名称的新数据库中。如果您升级到5.1版本,则可以查找并使用RENAME DATABASE命令。

8
请参考另一条答案。不建议采用这种解决方法,因为它可能会破坏您的数据库。在其他版本中,已将其禁用。 - Merlyn Morgan-Graham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接