Ако установите, че получавате грешка, която гласи нещо като „ГРЕШКА 1136 (21S01):Броят на колоните не съвпада с броя на стойностите на ред ” в MariaDB, вероятно е защото сте посочили грешен брой изрази за броя на колоните в колоната, когато се опитвате да вмъкнете данни в таблица.
С други думи, опитвате се да вмъкнете твърде много колони или недостатъчно колони.
За да коригирате, коригирайте своя INSERT
оператор, за да вмъкнете правилния брой стойности в таблицата.
Можете също да наименувате колоните във вашия INSERT
оператор, така че MariaDB да знае в кои колони трябва да се вмъкне всеки израз.
Пример за грешка
Да предположим, че имаме следната таблица:
<пред>+-------+--------+--------+| PetId | Име на домашни любимци | PetType |+-------+--------+--------+| 1 | Пухкави | Котка || 2 | Tweet | Птица |+-------+--------+--------+Следният код ще причини грешката:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
Резултат:
ГРЕШКА 1136 (21S01):Броят на колоните не съвпада с броя на стойностите на ред 1
В този случай се опитах да вмъкна данни за четири колони в таблица, която има само три колони.
Ще получим същата грешка, ако се опитаме да вмъкнем твърде малко колони:
INSERT INTO Pets VALUES ( 3, 'Wag' );
Резултат:
ГРЕШКА 1136 (21S01):Броят на колоните не съвпада с броя на стойностите на ред 1
Решение 1
Очевидното решение е да вмъкнете правилния брой редове. Следователно бихме могли да пренапишем нашия код, както следва:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );
Резултат:
Заявката е ОК, засегнат е 1 ред (0,010 сек)
Решение 2
Друг начин да го направим е да назовем изрично колоните, за които искаме да вмъкнем данни. Тази техника може да се използва за вмъкване на по-малко колони, отколкото са в таблицата.
Пример:
INSERT INTO Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );
Резултат:
Заявката е ОК, засегнат е 1 ред (0,005 сек)
Този метод може да доведе до различна грешка, ако има ограничения, които изискват подаване на стойност за тази колона (например, ако таблицата има NOT NULL
ограничение за тази колона). Следователно ще трябва да се уверите, че спазвате всички ограничения за колоната, когато правите това.