5

列数が一致するクエリを実行しようとすると、MySQLがこのエラーを発行します。テーブルの構造は次のとおりです。

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はunsignedsmallintであるため、私には意味がありません。

この問題に関する助けをいただければ幸いです。

編集:エラーは、テーブルに関連付けられたトリガーが原因で発生しました。詳細についてはコメントをご覧ください。

4

1 に答える 1

3

このエラーは、テーブルに関連付けられたトリガーが原因で、別のテーブルで値 133 に対して副挿入を実行しましたが、値 132 に対してではありませんでした。データを挿入していたメインテーブル。

于 2012-08-16T09:53:59.753 に答える