MySQL“;列计数不为';t匹配值计数“;但计数确实相符
当我试图执行一个列计数不匹配的查询时,MySQL发出了这个错误。以下是表格的结构:MySQL“;列计数不为';t匹配值计数“;但计数确实相符,mysql,Mysql,当我试图执行一个列计数不匹配的查询时,MySQL发出了这个错误。以下是表格的结构: mysql> desc S_3068; +-------------------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------------+---------
mysql> desc S_3068;
+-------------------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+----------------------+------+-----+---------+-------+
| SfmID | smallint(5) unsigned | NO | PRI | 1 | |
| DatValue | float | NO | | 0 | |
| DatRawValue | int(10) unsigned | NO | | 0 | |
| DatTime | int(10) unsigned | NO | PRI | 0 | |
| DatBusOrder | tinyint(3) unsigned | NO | PRI | 1 | |
| DatFormulaVersion | tinyint(3) unsigned | NO | | 0 | |
+-------------------+----------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
执行此查询时,我遇到上述错误:
mysql> insert ignore into S_3068 values (133, 15.82, 5542, 1339309260, 0, 1);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
如您所见,列计数与值计数不匹配。现在更令人费解的是,查询在SfmID=132时工作得非常好:
mysql> insert ignore into S_3068 values (132, 15.82, 5542, 1339309260, 0, 1);
Query OK, 1 row affected (0.00 sec)
SfmID是一个无符号的smallint,这对我来说没有任何意义
在这件事上的任何帮助都将不胜感激
编辑:错误是由与表关联的触发器引起的。有关详细信息,请参阅注释。该错误是由与表关联的触发器引起的,该触发器在另一个表上对值133(而不是值132)进行侧插入。MySQL发出的错误是关于另一个表(列计数确实是错误的),而不是关于我在其中插入数据的主表。使用
INSERT
而不指定列,例如:INSERT into s_3068(sfmid,datvalue…)值。。。(
是一种糟糕的编码风格。您应该始终明确说明列名MySQL的哪个版本?在5.0.24中看起来似乎是合理的。检查表上是否定义了任何触发器您是对的:有一个触发器与表关联,在另一个表上为值133而不是值132进行侧插入。与MySQL通常一样,更多带有错误信息的信息会有所帮助……无论如何,非常感谢!@FrançoisIngelrest-请利用这一机会发布解决方案,作为对您问题的回答,以便将来其他人可以使用它!我们很高兴您发现了错误,但如果其他人能够根据您的错误发现发生了什么,我们会更高兴经验