我在Clever-Cloud上托管了一个数据库(https://www.clever-cloud.com/pricing - MySQL插件大小LM:内存1 GB& 2 vCPUS)。我有一张188 000行的表,使用InnoDb引擎大约311 MB。
当我尝试删除我的表的一列(此列没有索引)时,我在phpMyAdmin中遇到以下错误:
错误发生时的MySQL日志:https://gist.github.com/urcadox/038c180cefdcba20e1052e7418a43324
我已经读过InnoDb引擎使用内存来创建一个新表,在没有删除列的情况下复制数据并切换旧表和新表以执行放置操作。
谢谢!
答案 0 :(得分:0)
为什么不在表格更改查询中尝试ALGORITHM = COPY?它是ALTER TABLE syntax的一部分它强制复制表而不是在适当的位置进行修改。它的内存使用量可能会更低。但某些警告适用
使用ALGORITHM = COPY子句运行的任何ALTER TABLE操作都会阻止 并发DML操作。仍然允许并发查询。那 是,表复制操作始终至少包括并发 LOCK = SHARED的限制(允许查询但不允许DML)。您可以 通过指定进一步限制此类操作的并发性 LOCK = EXCLUSIVE,可以阻止DML和查询。