Jedna z nejběžnějších chybových zpráv v MySQL zní takto:„CHYBA 1136 (21S01):Počet sloupců neodpovídá počtu hodnot na řádku 1 “.
K této chybě obvykle dochází, když se pokoušíte vložit data do tabulky, ale počet sloupců, které se pokoušíte vložit, neodpovídá počtu sloupců v tabulce.
Jinými slovy, buď se pokoušíte vložit příliš mnoho sloupců, nebo málo sloupců.
Chcete-li tento problém vyřešit, ujistěte se, že do tabulky vkládáte správný počet sloupců.
Případně můžete pojmenovat sloupce v INSERT
tak, aby MySQL vědělo, do kterých sloupců je třeba vložit vaše data.
K chybě může také dojít, pokud do ROW()
předáte nesprávný počet sloupců klauzule při použití VALUES
prohlášení.
Příklad chyby
Předpokládejme, že máme následující tabulku:
+----------+----------+----------+ | column_0 | column_1 | column_2 | +----------+----------+----------+ | 1 | 2 | 3 | | 4 | 5 | 6 | +----------+----------+----------+
Chybu způsobí následující kód:
INSERT INTO t1 VALUES (7, 8, 9, 10);
Výsledek:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
V tomto případě jsem se pokusil vložit data pro čtyři sloupce do tabulky, která má pouze tři sloupce.
Pokud se pokusíme vložit příliš málo sloupců, dostaneme stejnou chybu:
INSERT INTO t1 VALUES (7, 8);
Výsledek:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Řešení 1
Samozřejmým řešením je vložit správný počet řádků. Proto bychom mohli přepsat náš kód následovně:
INSERT INTO t1 VALUES (7, 8, 9);
Výsledek:
Query OK, 1 row affected (0.00 sec)
Řešení 2
Dalším způsobem, jak to udělat, je explicitně pojmenovat sloupce, pro které chceme vložit data. Tuto techniku lze použít k vložení méně sloupců, než je v tabulce.
Příklad:
INSERT INTO t1 (column_0, column_1) VALUES (7, 8);
Výsledek:
Query OK, 1 row affected (0.00 sec)
Tato metoda může vést k jiné chybě, pokud existují nějaká omezení, která vyžadují předání hodnoty pro daný sloupec (například pokud tabulka obsahuje NOT NULL
omezení na tento sloupec). Proto se při tom musíte ujistit, že dodržujete všechna omezení na sloupci.