2012-06-10 21 views
5

MySQL emette questo errore quando tento di eseguire una query in cui il conteggio delle colonne corrisponde. Ecco la struttura della tabella:MySQL "Il conteggio delle colonne non corrisponde al conteggio dei valori" ma il conteggio corrisponde allo

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) 

ottengo l'errore di cui sopra quando eseguo questa query:

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 

Come si può vedere, il numero di colonne fa corrisponde al valore di conteggio. Ora, ciò che è ancora più sconcertante è che la query funziona perfettamente bene con 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 essere uno smallint unsigned, che non ha alcun senso per me.

Qualsiasi aiuto in merito sarebbe molto apprezzato.

MODIFICA: l'errore è stato causato da un trigger associato alla tabella. Si prega di vedere i commenti per ulteriori informazioni.

+2

'CONTROLLA TABELLA S_3068'? – eggyal

+0

Non sono sicuro di cosa avrebbe dovuto fare ma funzionava correttamente (stato OK) e tuttavia la query ha esito negativo con lo stesso errore. –

+0

Cosa succede se si elencano esplicitamente le colonne (non riesco a capire perché questo potrebbe fare la differenza, ma potrebbe aiutare a restringere la fonte del problema)? – eggyal

risposta

2

L'errore è stato causato da un trigger associato alla tabella, facendo un inserto laterale su un'altra tabella per il valore 133 ma non per il valore 132. L'errore emesso da MySQL riguardava l'altra tabella (il conteggio delle colonne era effettivamente errato) e non sulla tabella principale in cui stavo inserendo i dati.

Problemi correlati