MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

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

Jeśli zauważysz błąd, który brzmi mniej więcej tak:„BŁĄD 1136 (21S01):liczba kolumn nie odpowiada liczbie wartości w wierszu ” w MariaDB jest to prawdopodobnie spowodowane określeniem nieprawidłowej liczby wyrażeń dla liczby kolumn w kolumnie podczas próby wstawienia danych do tabeli.

Innymi słowy, próbujesz wstawić za dużo lub za mało kolumn.

Aby naprawić, dostosuj INSERT oświadczenie, aby wstawić poprawną liczbę wartości do tabeli.

Możesz również nazwać kolumny w swoim INSERT oświadczenie, aby MariaDB wiedziała, do których kolumn należy wstawić każde wyrażenie.

Przykład błędu

Załóżmy, że mamy następującą tabelę:

+-------+---------+---------+
| PetId | PetName | PetType |
+-------+---------+---------+
|     1 | Fluffy  | Cat     |
|     2 | Tweet   | Bird    |
+-------+---------+---------+

Poniższy kod spowoduje błąd:

INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );

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 Pets VALUES ( 3, 'Wag' );

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 Pets VALUES ( 3, 'Wag', 'Dog' );

Wynik:

Query OK, 1 row affected (0.010 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 Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );

Wynik:

Query OK, 1 row affected (0.005 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. Mój administrator baz danych jest chory — porady dotyczące przełączania awaryjnego bazy danych dla administratorów SysAdmin

  2. Zapewnienie wysokiej dostępności komponentów bazy danych (HA) za pomocą systemów równoważenia obciążenia

  3. Napraw „BŁĄD 1222 (21000):Użyte instrukcje SELECT mają inną liczbę kolumn” podczas korzystania z UNION w MariaDB

  4. Zrozumienie skutków dużych opóźnień w rozwiązaniach MySQL i MariaDB o wysokiej dostępności

  5. Jak TIMEDIFF() działa w MariaDB