Едно от най-често срещаните съобщения за грешка в 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
ограничение за тази колона). Следователно ще трябва да се уверите, че спазвате всички ограничения за колоната, когато правите това.