【问题标题】:ERROR 1136: Column count doesn't match value count at row 1错误 1136:列计数与第 1 行的值计数不匹配
【发布时间】:2011-09-26 15:18:09
【问题描述】:

我得到错误:

Column count doesn't match value count at row 1.

但我已经检查并重新检查了我的查询,一切似乎都很好:

UPDATE
    table
SET
    col = 'enum(''FOO'',''BAR'')'
WHERE
    col1 = ''
AND
    col2 = 'val2'
AND
    col3 = 3;

我认为该表可能有一些引发错误的触发器——我没有设计系统——但我找不到任何触发器。

我在至少三个不同的表中发现了相同的错误。

注意。第三行的“枚举”实际上应该是一个字符串,而不是枚举类型。

【问题讨论】:

  • 您确定这是产生此错误的查询吗?
  • “显示来自 的触发器”返回什么?
  • @ypercube 是的,我确定,我直接在我的 MySQL 客户端上运行它。
  • @srivani 空结果集,未定义触发器:-S

标签: mysql


【解决方案1】:

这可能是一些事情,但这里有两个想法:

-有一个触发器需要更改/删除。

-您更新单元格的值超过了列的长度。 Article on this.

【讨论】:

  • 非常感谢。我刚刚检查了:数据库中没有触发器,我要更新的列定义为text(65535),所以它绝对没有超过长度。
  • 您的任何表名或列名是保留字吗?尝试用 `` 包围你的表名和列名。 (重音)
  • 更新后的值中是否有任何内容转义/取消撇号? -- val2 也是如此。
  • 还是专栏有PK/FK限制?
  • 有撇号,但正确转义,我只是在没有它们的情况下尝试相同的查询,并得到相同的错误。
【解决方案2】:

显然有一些触发器更新了另一个数据库,我不知道为什么show triggers from <dbname> 返回一个空行集。

显然,在迁移他们的系统时,他们必须寻求支持来为他们创建触发器。

【讨论】:

    【解决方案3】:

    某些时间触发器也会产生此问题。例如,我创建了一个触发器来记录条目,当我在主表中添加一些字段并尝试更新主表时,它会显示相同的错误。经过一些工作后,我明白了这一点并在日志表中创建了相同的字段并解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      相关资源
      最近更新 更多