sql >> Databáze >  >> RDS >> Mysql

Oprava „CHYBA 1136 (21S01):Počet sloupců neodpovídá počtu hodnot na řádku 1“ při vkládání dat do MySQL

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.


  1. Jak vybrat podmnožinu sloupců ze sady výsledků uložené procedury (T-SQL)

  2. Jak mohu urychlit row_number v Oracle?

  3. Jak zkontrolovat verzi PostgreSQL

  4. HikariCP:Jaké časové limity na úrovni databáze je třeba vzít v úvahu při nastavení maxLifetime pro Oracle 11g