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.