我有一个非常“宽”的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
经过一番研究,我决定年满八岁 VARCHAR(2000)
将表中的列放入 TEXT
柱。在做了那件事之后,试着添加我的新 VARCHAR(500)
我又遇到了同样的错误。
现在,那些 VARCHAR(2000)
列之间可能没有500个字符,但它们的长度确实超过了我试图插入到新列中的~20个字符 VARCHAR(500)
现场。
据我所知, VARCHAR
只占它所需要的空间。但是,如果一个表只能容纳8126个字符,那么它就不应该分配8个字符 VARCHAR(2000)
因为8x2000=16000,这比8126大得多,否则当您试图填充8126以外的字段时,不管您将什么数据放在哪里,都会发生错误。所以我的第一个问题是:一张table能接受八张吗 VARCHAR(2000)
但你会在填充它们时用完空间吗?
我的第二个问题是:为什么不移动这些 VARCHAR(2000)
至 TEXT
清理空间以便我添加新的 VARCHAR(500)
? 尤其是因为我在这500个字里只写了20个字,而在2000年代已经有100个字了。
注意:我确实在其他问题中看到了增加表大小的方法,但我并不打算这么做。这是一个关于理论的问题,而不是寻找解决方案。
暂无答案!
目前还没有任何答案,快来回答吧!