MySQL - 删除列

时间:2017-03-20 18:04:02

标签: mysql text blob innodb

我有一张很宽的桌子。我需要在某些时候重构代码,但目前这不是一个选项。我需要删除一个列,一个varcher(1024)并为表大小做一些更好的操作,将varchar(1024)中的一列修改为TEXT。

问题是表上的任何alter table命令,drop column或modify column都会在以下错误中结束: “行大小太大。使用的表类型的最大行大小,不包括BLOB,是8126.这包括存储开销,请查看手册。您必须将某些列更改为TEXT或BLOB”

我该怎么办?据我所知,mysql建议我将一些列更改为TEXT vat,这样做最终会出现同样的错误。

我已经设定好了 innodb_log_file_size = 2G innodb_log_buffer_size = 2G innodb_file_per_table innodb_file_format =梭子鱼 internal_tmp_disk_storage_engine = MyISAM的;

1 个答案:

答案 0 :(得分:0)

切换到ROW_FORMAT=DYNAMIC。在此模式下,宽列存储为指向行外区域的指针。在默认模式下,它们存储为767字节加上一个指针,因此更有可能导致您收到的错误。

如果您需要进一步讨论,我需要知道您正在运行的版本,加上SHOW CREATE TABLE,以及失败的ALTER

相关问题