sql >> Database >  >> RDS >> Mysql

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

Een van de meest voorkomende foutmeldingen in MySQL gaat als volgt:"ERROR 1136 (21S01):Kolomtelling komt niet overeen met waardetelling in rij 1 ".

Deze fout treedt meestal op wanneer u gegevens in een tabel probeert in te voegen, maar het aantal kolommen dat u probeert in te voegen, komt niet overeen met het aantal kolommen in de tabel.

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

Om dit probleem op te lossen, moet u ervoor zorgen dat u het juiste aantal kolommen in de tabel invoegt.

Als alternatief kunt u de kolommen een naam geven in uw INSERT statement zodat MySQL weet in welke kolommen uw gegevens moeten worden ingevoegd.

De fout kan ook optreden als u het verkeerde aantal kolommen doorgeeft aan een ROW() clausule bij gebruik van de VALUES verklaring.

Voorbeeld van fout

Stel dat we de volgende tabel hebben:

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

De volgende code zal de fout veroorzaken:

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

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 t1 VALUES (7, 8);

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 t1 VALUES (7, 8, 9);

Resultaat:

Query OK, 1 row affected (0.00 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 t1 (column_0, column_1) VALUES (7, 8);

Resultaat:

Query OK, 1 row affected (0.00 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. Waarom gegevensback-ups belangrijk zijn voor uw organisatie

  2. Stel een standaard openbaar profiel in voor databasemail (SSMS)

  3. Het verschil tussen primaire sleutel en unieke sleutel

  4. PgBouncer Connection Pooler voor PostgreSQL gebruiken met ClusterControl 1.8.2