sql >> Database >  >> RDS >> MariaDB

Fix "ERROR 1136 (21S01):Kolomtelling komt niet overeen met waardetelling in rij 1" bij het invoegen van gegevens in MariaDB

Als u merkt dat u een foutmelding krijgt met de volgende tekst:"ERROR 1136 (21S01):Kolomtelling komt niet overeen met waardetelling in rij ” in MariaDB, komt dit waarschijnlijk omdat u het verkeerde aantal uitdrukkingen hebt opgegeven voor het aantal kolommen in de kolom wanneer u probeert gegevens in een tabel in te voegen.

Met andere woorden, u probeert te veel of niet genoeg kolommen in te voegen.

Pas uw INSERT . aan om dit op te lossen instructie om het juiste aantal waarden in de tabel in te voegen.

U kunt de kolommen ook een naam geven in uw INSERT statement zodat MariaDB weet in welke kolommen elke expressie moet worden ingevoegd.

Voorbeeld van fout

Stel dat we de volgende tabel hebben:

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

De volgende code zal de fout veroorzaken:

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

Resultaat:

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

In dit geval heb ik geprobeerd gegevens voor vier kolommen in te voegen in een tabel die slechts drie kolommen heeft.

We krijgen dezelfde foutmelding als we proberen te weinig kolommen in te voegen:

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

Resultaat:

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

Oplossing 1

De voor de hand liggende oplossing is om het juiste aantal rijen in te voegen. Daarom zouden we onze code als volgt kunnen herschrijven:

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

Resultaat:

Query OK, 1 row affected (0.010 sec)

Oplossing 2

Een andere manier om dit te doen is om de kolommen waarvoor we gegevens willen invoegen expliciet een naam te geven. Deze techniek kan worden gebruikt om minder kolommen in te voegen dan in de tabel staan.

Voorbeeld:

INSERT INTO Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );

Resultaat:

Query OK, 1 row affected (0.005 sec)

Deze methode kan resulteren in een andere fout als er beperkingen zijn waarvoor een waarde moet worden doorgegeven voor die kolom (bijvoorbeeld als de tabel een NOT NULL heeft beperking op die kolom). Daarom moet u ervoor zorgen dat u zich houdt aan eventuele beperkingen in de kolom wanneer u dit doet.


  1. Update query if-instructie voor Oracle

  2. Hoe een-op-een, een-op-veel en veel-op-veel relaties te implementeren tijdens het ontwerpen van tabellen?

  3. Gebruik van MySQL's INDIEN BESTAAT

  4. Waarom is het gebruik van een op mysql voorbereide instructie veiliger dan het gebruik van de algemene escape-functies?