SQL错误(1118):行大小太大。使用的表类型的最大行大小,不包括BLOB

时间:2015-05-03 19:28:47

标签: mysql

我创建了一个MySQL数据库表。我必须在一个表中创建195列。我必须给出190列的数据类型是VARCHAR,5列数据类型是文本。每列的长度为500。

实际上我想在一个数据库表中创建1000列,我希望在每个表列中使用数据类型为VARCHAR。现在,当我在数据库表中创建新列时。我收到了这个错误:

  

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

1 个答案:

答案 0 :(得分:4)

您的数据库设计存在缺陷。

MySQL的最大行大小= 65,535字节。

假设每个字符1个字节500 X 1000 =每行50,000个字节,接近65,535。

对于VARCHAR(L),使用latin1每列1个字节需要保持长度L,所以现在我们处于501,000。

对于存储多字节字符的VARCHAR列,有效的最大字符数较少。例如,utf8字符每个字符最多可能需要三个字节。

500 X 4 X 1000 = 2,000,000字节(每个字符3个,长度为1个)

有关详细信息,请参阅MySQL文档MySQL Maximum Number of ColumnsData Type Storage Requirements

我建议您在继续之前了解有关数据库设计的更多信息。