使用phpMyAdmin,我试图重命名我的6GB数据库,却发现该操作需要几个小时。根据{{3}},听起来重命名数据库需要创建一个新数据库并复制数据。为什么这个名称只是一个指向某些文本的指针,可以随意更改?
2016年3月14日编辑
我最初接受了Gandalf的答案,因为我无法复制数据库重命名这么长时间。但这个漫长的重命名过程再次发生。这是phpMyAdmin悬挂的截图:
以下是直接连接到MySQL服务器时SHOW PROCESSLIST
的结果的屏幕截图:
看起来查询在添加约束时正在旋转。我很确定phpMyAdmin运行的命令是:
RENAME TABLE harmonizome_temp TO harmonizome;
答案 0 :(得分:0)
如果在此过程中出现错误,则可能需要确保数据库完整性。
有关数据库的信息存储在文件系统(每个数据库是一个目录)中,也存储在INFORMATION_SCHEMA
数据库中。重命名数据库时,两者都必须更新。如果它只是重命名了目录并更新了INFORMATION_SCHEMA
,那么会有一段时间不同步。如果在此阶段中止该过程,则数据库将被破坏。
通过复制数据,可以确保它们永远不会同步。在之后更新所有INFORMATION_SCHEMA
以引用新数据库名称之前,不会删除旧目录。如果进程在中间中止,则文件系统中将存在重复数据,但INFORMATION_SCHEMA
将指向一个或另一个(事务可以确保INFORMATION_SCHEMA
中的所有内容都以原子方式更新)。