Mysql
 sql >> база данни >  >> RDS >> Mysql

Поправете „ГРЕШКА 1136 (21S01):Броят на колоните не съвпада с броя на стойностите на ред 1“ при вмъкване на данни в MySQL

Едно от най-често срещаните съобщения за грешка в MySQL гласи следното:„ГРЕШКА 1136 (21S01):Броят на колоните не съвпада с броя на стойностите на ред 1 “.

Тази грешка обикновено възниква, когато се опитвате да вмъкнете данни в таблица, но броят на колоните, които се опитвате да вмъкнете, не съвпада с броя на колоните в таблицата.

С други думи, или се опитвате да вмъкнете твърде много колони, или нямате достатъчно колони.

За да отстраните този проблем, уверете се, че вмъквате правилния брой колони в таблицата.

Като алтернатива можете да наименувате колоните във вашия INSERT изявление, така че MySQL да знае в кои колони трябва да се вмъкнат вашите данни.

Грешката може да възникне и ако подадете грешен брой колони към ROW() клауза при използване на VALUES изявление.

Пример за грешка

Да предположим, че имаме следната таблица:

+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
|        1 |        2 |        3 |
|        4 |        5 |        6 |
+----------+----------+----------+

Следният код ще причини грешката:

INSERT INTO t1 VALUES (7, 8, 9, 10);

Резултат:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

В този случай се опитах да вмъкна данни за четири колони в таблица, която има само три колони.

Ще получим същата грешка, ако се опитаме да вмъкнем твърде малко колони:

INSERT INTO t1 VALUES (7, 8);

Резултат:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

Решение 1

Очевидното решение е да вмъкнете правилния брой редове. Следователно бихме могли да пренапишем нашия код, както следва:

INSERT INTO t1 VALUES (7, 8, 9);

Резултат:

Query OK, 1 row affected (0.00 sec)

Решение 2

Друг начин да го направим е да посочим изрично колоните, за които искаме да вмъкнем данни. Тази техника може да се използва за вмъкване на по-малко колони, отколкото са в таблицата.

Пример:

INSERT INTO t1 (column_0, column_1) VALUES (7, 8);

Резултат:

Query OK, 1 row affected (0.00 sec)

Този метод може да доведе до различна грешка, ако има ограничения, които изискват подаване на стойност за тази колона (например, ако таблицата има NOT NULL ограничение за тази колона). Следователно ще трябва да се уверите, че спазвате всички ограничения за колоната, когато правите това.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL INSERT IF (персонализирани оператори if)

  2. Как да промените НАБОР ОТ СИМВОВЕ (и СЪБОРЯВАНЕ) в цялата база данни?

  3. Създайте MySQL база данни

  4. Научете основни SQL заявки с помощта на MySQL

  5. Бърз поглед към цифровите функции на SQL Server