Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Napraw „BŁĄD 1136 (21S01):Liczba kolumn nie odpowiada liczbie wartości w wierszu 1” podczas wstawiania danych do MySQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kopiuj/duplikuj bazę danych bez użycia mysqldump

  2. Jak naprawić BŁĄD 1130 (HY000):Host nie może połączyć się z tym serwerem MySQL

  3. MySQL – różne metody poznania aktualnego użytkownika

  4. Połączyć się z kontenerem Docker MySQL z hosta lokalnego?

  5. Błąd MySQL 1436:Przepełnienie stosu wątków za pomocą prostego zapytania