为什么这个ALTER TABLE MYSQL查询没有执行(返回false)?语法似乎正确


Why is this ALTER TABLE MYSQL query not executing(returning false)? The syntax appears correct

我正在运行基于向类别添加删除字段的动态查询。以下是一个示例查询:

ALTER TABLE se_classifiedvalues 
  ADD classifiedvalue_402 varchar(250) NOT NULL default ''

MYSQL并没有抱怨语法,但当我对查询进行var转储时,它返回false。当我将该查询放入phpMyAdmin并尝试执行sql时,它抛出了以下内容:

#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

有人知道我能做些什么来解决这个问题吗?

感谢

这个表中已经有多少列了?402?(我希望不会)。MySQL在表的一行中可以存储的数据量(字节)有一个限制,看起来你已经达到了这个限制。

编辑:以下是MySQL网站上的链接,您可以在其中阅读有关数据限制的信息:http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

我认为你需要重新思考你的数据结构。

附带问题:你在使用ExpressionEngine吗?

使所有列的总大小小于限制65535字节。请注意,UTF8列的计数为每个字符3个字节。

65535是以字节为单位的最大行大小。

来自MySQL:

MySQL 5.0.3及更高版本中VARCHAR的有效最大长度为受最大行大小(65535字节,在所有列)和所使用的字符集。