Ако срещнете грешка, която гласи „INSERT има повече изрази от целевите колони ” когато се опитвате да вмъкнете данни в Postgres, това е, защото се опитвате да вмъкнете данни в повече колони, отколкото таблицата всъщност съдържа.
Например, може да се опитвате да вмъкнете четири израза в таблица, която съдържа само три колони.
За да коригирате, премахнете допълнителния/и израз/и от вашия INSERT
изявление. С други думи, уверете се, че вмъквате правилния брой колони.
Пример за грешка
Да предположим, че имаме таблица като тази:
<пред>+-------+--------+--------+| дребнав | име на домашен любимец | домашни любимци |+-------+--------+--------+| 1 | Пухкави | Котка || 2 | Tweet | Птица |+-------+--------+--------+Тази таблица има три колони.
Да предположим, че искаме да вмъкнем още един ред.
Ето как да генерирате грешката:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
Резултат:
ГРЕШКА:INSERT има повече изрази от целевите колони LINE 1:INSERT INTO Pets VALUES (3, 'Wag', 'Dog', 'Brown'); ^
Тук се опитах да вмъкна четири израза в таблица, която има само три колони.
Решение
Решението е лесно. Премахнете допълнителния израз:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );
Тук премахнах последния израз (Brown
) от VALUES
списък. Това доведе до вмъкването на реда без грешка.
Или, за да сте сигурни, че няма да вмъкнете по невнимание данни в грешната колона, можете изрично да посочите всяка колона:
INSERT INTO Pets ( PetId, PetName, PetType )
VALUES ( 1, 'Wag', 'Dog' );
След изпълнение на един от горните изрази, таблицата вече изглежда така:
SELECT * FROM Pets;
Резултат:
<пред>+-------+--------+--------+| дребнав | име на домашен любимец | домашни любимци |+-------+--------+--------+| 1 | Пухкави | Котка || 2 | Tweet | Птица || 3 | Размахване | Куче |+-------+--------+--------+Успешно вмъкнахме реда в таблицата.