En af de mere almindelige fejlmeddelelser i MySQL lyder sådan her:"FEJL 1136 (21S01):Kolonneantal matcher ikke værdiantal i række 1 “.
Denne fejl opstår typisk, når du forsøger at indsætte data i en tabel, men antallet af kolonner, du forsøger at indsætte, svarer ikke til antallet af kolonner i tabellen.
Med andre ord forsøger du enten at indsætte for mange kolonner eller ikke nok kolonner.
For at løse dette problem skal du sørge for at indsætte det korrekte antal kolonner i tabellen.
Alternativt kan du navngive kolonnerne i din INSERT
sætning, så MySQL ved, hvilke kolonner dine data skal indsættes i.
Fejlen kan også opstå, hvis du sender det forkerte antal kolonner til en ROW()
klausul, når du bruger VALUES
erklæring.
Eksempel på fejl
Antag, at vi har følgende tabel:
+----------+----------+----------+ | column_0 | column_1 | column_2 | +----------+----------+----------+ | 1 | 2 | 3 | | 4 | 5 | 6 | +----------+----------+----------+
Følgende kode vil forårsage fejlen:
INSERT INTO t1 VALUES (7, 8, 9, 10);
Resultat:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
I dette tilfælde forsøgte jeg at indsætte data for fire kolonner i en tabel, der kun har tre kolonner.
Vi får den samme fejl, hvis vi forsøger at indsætte for få kolonner:
INSERT INTO t1 VALUES (7, 8);
Resultat:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Løsning 1
Den oplagte løsning er at indsætte det korrekte antal rækker. Derfor kunne vi omskrive vores kode som følger:
INSERT INTO t1 VALUES (7, 8, 9);
Resultat:
Query OK, 1 row affected (0.00 sec)
Løsning 2
En anden måde at gøre det på er at navngive de kolonner, som vi ønsker at indsætte data for. Denne teknik kan bruges til at indsætte færre kolonner end i tabellen.
Eksempel:
INSERT INTO t1 (column_0, column_1) VALUES (7, 8);
Resultat:
Query OK, 1 row affected (0.00 sec)
Denne metode kan resultere i en anden fejl, hvis der er nogen begrænsninger, der kræver, at en værdi sendes til den kolonne (f.eks. hvis tabellen har en NOT NULL
begrænsning på den kolonne). Derfor skal du sikre dig, at du overholder eventuelle begrænsninger på kolonnen, når du gør dette.