MariaDB
 sql >> Database >  >> RDS >> MariaDB

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

Se ti accorgi di ricevere un errore simile a "ERRORE 1136 (21S01):il conteggio delle colonne non corrisponde al conteggio del valore alla riga ” in MariaDB, è probabilmente perché hai specificato il numero errato di espressioni per il numero di colonne nella colonna quando tenti di inserire dati in una tabella.

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

Per correggere, modifica il tuo INSERT istruzione per inserire il numero corretto di valori nella tabella.

Puoi anche nominare le colonne nel tuo INSERT istruzione in modo che MariaDB sappia in quali colonne deve essere inserita ogni espressione.

Esempio di errore

Supponiamo di avere la seguente tabella:

+-------+---------+---------+
| PetId | PetName | PetType |
+-------+---------+---------+
|     1 | Fluffy  | Cat     |
|     2 | Tweet   | Bird    |
+-------+---------+---------+

Il codice seguente causerà l'errore:

INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );

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 Pets VALUES ( 3, 'Wag' );

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 Pets VALUES ( 3, 'Wag', 'Dog' );

Risultato:

Query OK, 1 row affected (0.010 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 Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );

Risultato:

Query OK, 1 row affected (0.005 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.