Mysql
 sql >> Database >  >> RDS >> Mysql

Correzione di "ERRORE 1136 (21S01):il conteggio delle colonne non corrisponde al conteggio dei valori nella riga 1" durante l'inserimento di dati in MySQL

Uno dei messaggi di errore più comuni in MySQL è questo:"ERROR 1136 (21S01):il conteggio delle colonne non corrisponde al conteggio dei valori alla riga 1 “.

Questo errore si verifica in genere quando si tenta di inserire dati in una tabella, ma il numero di colonne che si sta tentando di inserire non corrisponde al numero di colonne nella tabella.

In altre parole, stai cercando di inserire troppe colonne o non abbastanza colonne.

Per risolvere questo problema, assicurati di inserire il numero corretto di colonne nella tabella.

In alternativa, puoi nominare le colonne nel tuo INSERT in modo che MySQL sappia in quali colonne devono essere inseriti i tuoi dati.

L'errore può verificarsi anche se si passa il numero errato di colonne a un ROW() clausola quando si utilizza VALUES dichiarazione.

Esempio di errore

Supponiamo di avere la seguente tabella:

+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
|        1 |        2 |        3 |
|        4 |        5 |        6 |
+----------+----------+----------+

Il codice seguente causerà l'errore:

INSERT INTO t1 VALUES (7, 8, 9, 10);

Risultato:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

In questo caso, ho provato a inserire i dati per quattro colonne in una tabella che ha solo tre colonne.

Otterremo lo stesso errore se proviamo a inserire un numero insufficiente di colonne:

INSERT INTO t1 VALUES (7, 8);

Risultato:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

Soluzione 1

La soluzione ovvia è inserire il numero corretto di righe. Pertanto, potremmo riscrivere il nostro codice come segue:

INSERT INTO t1 VALUES (7, 8, 9);

Risultato:

Query OK, 1 row affected (0.00 sec)

Soluzione 2

Un altro modo per farlo è nominare esplicitamente le colonne per le quali vogliamo inserire i dati. Questa tecnica può essere utilizzata per inserire meno colonne di quelle presenti nella tabella.

Esempio:

INSERT INTO t1 (column_0, column_1) VALUES (7, 8);

Risultato:

Query OK, 1 row affected (0.00 sec)

Questo metodo può generare un errore diverso se sono presenti vincoli che richiedono il passaggio di un valore per quella colonna (ad esempio, se la tabella ha un NOT NULL vincolo su quella colonna). Pertanto, quando esegui questa operazione, dovrai assicurarti di rispettare eventuali vincoli sulla colonna.