Pokud zjistíte, že se vám zobrazuje chyba, která zní něco jako „CHYBA 1136 (21S01):Počet sloupců neodpovídá počtu hodnot na řádku ” v MariaDB je to pravděpodobně proto, že jste při pokusu o vložení dat do tabulky zadali nesprávný počet výrazů pro počet sloupců ve sloupci.
Jinými slovy, pokoušíte se vložit příliš mnoho sloupců nebo málo sloupců.
Opravte to úpravou INSERT
příkaz pro vložení správného počtu hodnot do tabulky.
Můžete také pojmenovat sloupce v INSERT
tak, aby MariaDB věděla, do kterých sloupců je třeba vložit každý výraz.
Příklad chyby
Předpokládejme, že máme následující tabulku:
+-------+---------+---------+ | PetId | PetName | PetType | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | +-------+---------+---------+
Chybu způsobí následující kód:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
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 Pets VALUES ( 3, 'Wag' );
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 Pets VALUES ( 3, 'Wag', 'Dog' );
Výsledek:
Query OK, 1 row affected (0.010 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 Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );
Výsledek:
Query OK, 1 row affected (0.005 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.