我在尝试修改一个庞大的(InnoDB)MySQL表时遇到了一些问题。该表的ID列(主键)定义为
为了能够向此表添加更多行,我需要将此列的类型调整为
UNSIGNED INT
,但已达到其最大值(4294967295)。为了能够向此表添加更多行,我需要将此列的类型调整为
BIGINT
。然而,标准的MySQL ALTER
命令(以及我到目前为止找到的任何其他解决方案)都会尝试生成具有新定义的新表,然后将所有数据复制到其中。对于这个表来说,这需要942.0Gb的可用磁盘空间,而我只有271Gb的可用空间(也没有其他分区可用所需的磁盘空间)。
是否有不需要完全复制原始表格的解决方案(而是将数据移动到新表格或类似的东西)?
我不介意在修改过程中无法访问表格,表格可以完全锁定数小时而不会出现问题(我目前无法使用它)。