Jeden z najczęstszych komunikatów o błędach w MySQL brzmi tak:„BŁĄD 1136 (21S01):Liczba kolumn nie odpowiada liczbie wartości w wierszu 1 „.
Ten błąd zwykle występuje, gdy próbujesz wstawić dane do tabeli, ale liczba kolumn, które próbujesz wstawić, nie jest zgodna z liczbą kolumn w tabeli.
Innymi słowy, albo próbujesz wstawić za dużo kolumn, albo za mało kolumn.
Aby rozwiązać ten problem, upewnij się, że wstawiasz do tabeli odpowiednią liczbę kolumn.
Alternatywnie możesz nazwać kolumny w swoim INSERT
oświadczenie, aby MySQL wiedział, do których kolumn należy wstawić dane.
Błąd może również wystąpić, jeśli przekażesz niewłaściwą liczbę kolumn do ROW()
klauzula podczas korzystania z VALUES
oświadczenie.
Przykład błędu
Załóżmy, że mamy następującą tabelę:
+----------+----------+----------+ | column_0 | column_1 | column_2 | +----------+----------+----------+ | 1 | 2 | 3 | | 4 | 5 | 6 | +----------+----------+----------+
Poniższy kod spowoduje błąd:
INSERT INTO t1 VALUES (7, 8, 9, 10);
Wynik:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
W tym przypadku próbowałem wstawić dane dla czterech kolumn do tabeli, która ma tylko trzy kolumny.
Otrzymamy ten sam błąd, jeśli spróbujemy wstawić za mało kolumn:
INSERT INTO t1 VALUES (7, 8);
Wynik:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Rozwiązanie 1
Oczywistym rozwiązaniem jest wstawienie odpowiedniej liczby wierszy. Dlatego możemy przepisać nasz kod w następujący sposób:
INSERT INTO t1 VALUES (7, 8, 9);
Wynik:
Query OK, 1 row affected (0.00 sec)
Rozwiązanie 2
Innym sposobem na zrobienie tego jest jawne nazwanie kolumn, dla których chcemy wstawić dane. Ta technika może być wykorzystana do wstawienia mniejszej liczby kolumn niż w tabeli.
Przykład:
INSERT INTO t1 (column_0, column_1) VALUES (7, 8);
Wynik:
Query OK, 1 row affected (0.00 sec)
Ta metoda może spowodować inny błąd, jeśli istnieją ograniczenia, które wymagają przekazania wartości dla tej kolumny (na przykład, jeśli tabela zawiera NOT NULL
ograniczenia na tej kolumnie). Dlatego musisz upewnić się, że przestrzegasz wszelkich ograniczeń dotyczących kolumny, gdy to robisz.