Om du får ett felmeddelande som lyder något som "ERROR 1136 (21S01):Kolumnantal matchar inte värderäkning på rad 2 ” när du använder VALUES
uttalande i MySQL, beror det förmodligen på att det finns en oöverensstämmelse i antalet kolumner som anges i ROW()
klausuler.
För att åtgärda detta fel, se till att alla ROW()
satser innehåller exakt samma antal kolumner.
Exempel på fel
Här är ett exempel på kod som ger felet:
VALUES ROW(1, 2), ROW(3);
Resultat:
ERROR 1136 (21S01): Column count doesn't match value count at row 2
I det här fallet skickade jag två värden med den första ROW()
men bara ett värde med det andra.
Det var det som orsakade felet.
Lösning
För att åtgärda felet behöver vi bara se till att alla ROW()
satser innehåller samma antal värden.
Exempel:
VALUES ROW(1, 2), ROW(3, 4);
Resultat:
+----------+----------+ | column_0 | column_1 | +----------+----------+ | 1 | 2 | | 3 | 4 | +----------+----------+
Andra orsaker till felet
Samma fel kan också uppstå när du använder INSERT
för att infoga fel antal kolumner i en tabell.
I sådana fall, se till att du infogar rätt antal rader. Alternativt, för att infoga data i färre kolumner än tabellen innehåller, kan du uttryckligen namnge kolumnerna som du vill infoga data för.