2012-03-22 33 views
0

我正在运行动态查询的基础上添加删除字段的类别。 下面是一个例子查询:为什么这个ALTER TABLE MYSQL查询不能执行(返回false)?语法显示正确

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

MYSQL不抱怨的语法,但返回false当我VAR倾倒查询。当我扔的查询到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 

任何一个有任何想法,我能做些什么来解决这个问题?

谢谢

+0

任何方式来扩大这个限制或我必须重组? – Rooster 2012-03-22 14:48:04

+1

除了创建一些BLOB(即。TEXT)列外,没有办法进行扩展,因为实际内容存储在行外,所以会减少行中的存储空间。奇怪的是,这正是错误所说的。 :) – 2012-03-22 14:49:30

回答

5

此表中已有多少列? 402? (我希望不是)。 MySQL对于它可以存储在表的一行中的数据量(字节)有限制,并且看起来您已经达到了该限制。

编辑: 这里有一个关于MySQL的网站,在这里你可以阅读有关数据限制链接:http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

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

旁边的问题:你在使用ExpressionEngine吗?

+1

+1为“我希望不是”。我也是! – cmbuckley 2012-03-22 14:46:57

+0

b。大。看起来我必须重组。我希望没有必要,但客户做出了荒谬的要求。 – Rooster 2012-03-22 14:47:05

+0

没有402那只是自动增量键值。 402中的一些被删除。我不太确定,它是一个旧的框架,我希望不要用动态场生成器来重写某些部分。 – Rooster 2012-03-22 14:49:28

2

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

65,535是以字节为单位的最大行大小。

MySQL

在MySQL 5.0.3一个VARCHAR的有效最大长度和后面是 受到的最大行大小(65535个字节,这是其中 所有列共用)和字符设置使用。

相关问题