MySQL ERROR 1118行大小太大,将VARCHARS更改为TEXT但仍然出现错误

时间:2018-04-24 16:23:06

标签: mysql

我有一个非常宽的" MySQL表,有近700列。 (我继承了这个系统,将来会转移到一个键值存储,但这不在这个问题的范围内。)当我尝试添加VARCHAR(500)时,我遇到了这个错误:

  

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

a little research I decided to turn the eight VARCHAR(2000) columns in the table into TEXT columns之后。在这样做之后,再次尝试添加我的新VARCHAR(500)我遇到了同样的错误。

现在,这些VARCHAR(2000)列可能没有500个字符,但它们确实有超过我尝试插入新VARCHAR(500)字段的~20个字符。< / p>

据我了解,VARCHAR只占用需要的空间。但是如果一个表只能容纳8126个字符,那么它应该永远不能分配8个VARCHAR(2000),因为8 x 2000 = 16,000远远超过8126,否则当你尝试时会发生错误填写超过8126的那些字段,无论您放在哪里放置数据。 所以我的第一个问题是:表格是否可以接受八个VARCHAR(2000)这是正确的,但填充它们时会用尽空间吗?

我的第二个问题是:为什么没有移动那些VARCHAR(2000)TEXT为我添加新的VARCHAR(500)空间?特别是因为我在那500个中只放了20个字符,而且在2000年代已经有大约100个字符。

注意:我确实以other questions的方式看到了增加表格大小的方法,但我并没有尝试这样做。这是一个关于理论的问题,而不是寻找解决方案。

0 个答案:

没有答案