我创建了一个MySQL数据库表。我必须在一个表中创建195列。我必须给出190列的数据类型是VARCHAR,5列数据类型是文本。每列的长度为500。
实际上我想在一个数据库表中创建1000列,我希望在每个表列中使用数据类型为VARCHAR。现在,当我在数据库表中创建新列时。我收到了这个错误:
SQL错误(1118):行大小太大。使用的表类型(不计算BLOB)的最大行大小为65535.这包括存储开销,请查看手册。您必须将某些列更改为TEXT或BLOB
答案 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 Columns和Data Type Storage Requirements。
我建议您在继续之前了解有关数据库设计的更多信息。