mysql最大行大小

时间:2015-04-16 10:53:30

标签: mysql database size

我不知道为什么我在mysql 5.6.24上有这种奇怪的行为,你能帮助我吗?你认为这是一个错误

mysql -D database --default_character_set utf8 -e "ALTER TABLE abc_folder ADD COLUMN lev10 varchar(5000);"
  

第1行的错误1118(42000):行大小太大。使用的表类型(不计算BLOB)的最大行大小为65535.这包括存储开销,请查看手册。您必须将某些列更改为TEXT或BLOB

而不是

 mysql -D database --default_character_set utf8 -e "ALTER TABLE abc_folder ADD COLUMN lev10 varchar(50000);"

换句话说,接受更大的varchar()条目并正确工作。 有人知道发生了什么吗?

1 个答案:

答案 0 :(得分:1)

此错误意味着在您的表abc_folder中,如果没有TEXT或BLOBS类型的列,则单个行将大于65535个字节。 65535是可以用无符号16位二进制数表示的最高数。如上所述here

  

虽然InnoDB在内部支持大于65,535字节的行大小,但MySQL本身对所有列的总大小强加了行大小限制为65,535:

INSERT INTO abc_folder (lev10) VALUES (SUBSTR('Some Text',0, 5000))

这意味着在内部,MySQL可能使用16字节数来存储行的大小。

要纠正错误,我建议将VARCHAR(5000)更改为TEXT或使用多个表。 如果要在列上强加5000字节的限制,则使用TEXT,在插入表时应使用truncate函数。您可以使用substr

{{1}}