Подтвердить что ты не робот

PostgreSQL ERROR: INSERT имеет больше целевых столбцов, чем выражения, когда это не

Итак, я начинаю с этого...

SELECT * FROM parts_finishing;

... Я получаю это...

id, id_part, id_finish, id_metal, id_description, date, inside_hours_k, inside_rate, outside_material

(0 строк)

... так что все выглядит нормально до сих пор, поэтому я делаю это...

INSERT INTO parts_finishing 
(
 id_part, id_finish, id_metal, id_description, 
 date, inside_hours_k, inside_rate, outside_material
) VALUES (
('1013', '6', '30', '1', NOW(), '0', '0', '22.43'), 
('1013', '6', '30', '2', NOW(), '0', '0', '32.45'));

... и я получаю...

ОШИБКА: INSERT имеет больше столбцов назначения, чем выражения

Теперь я сделал несколько вещей, например, чтобы гарантировать, что числа не указаны в кавычках, в кавычках (хотелось бы, чтобы руководство по таблицам относилось к целым числам, числовым типам и т.д.) после того, как я, очевидно, подсчитал количество имен столбцов и значения вставляются. Я также попытался убедиться, что все запятые запятые... действительно в растерянности здесь. Нет других столбцов, кроме id, который является bigserial primary key.

4b9b3361

Ответ 1

Удалите лишний ():

INSERT INTO parts_finishing 
(
 id_part, id_finish, id_metal, id_description, 
 date, inside_hours_k, inside_rate, outside_material
) VALUES 
  ('1013', '6', '30', '1', NOW(), '0', '0', '22.43')
, ('1013', '6', '30', '2', NOW(), '0', '0', '32.45')
  ;

Ответ 2

У меня была похожая проблема при использовании композиции строк SQL с psycopg2 в Python, но проблема была немного другой. Мне не хватало запятой после одного из полей.

INSERT INTO parts_finishing
(id_part, id_finish, id_metal)
VALUES (
    %(id_part)s <-------------------- missing comma
    %(id_finish)s,
    %(id_metal)s
);

Это заставило psycopg2 эту ошибку:

ОШИБКА: У INSERT больше целевых столбцов, чем выражений.

Ответ 3

Это произошло со мной в большой вставке, все было хорошо (запятая), мне потребовалось некоторое время, чтобы заметить, что я вставляю не в ту таблицу, конечно, БД не знает ваших намерений. Копи-паста - корень всего зла... :-)

Ответ 4

Я также столкнулся с той же проблемой. Она будет поднята, когда количество приведенных столбцов и значений столбцов не совпадают.

Ответ 5

INSERT INTO NAVIGATORS_DETAILS(
        NAVIGATOR_NAME ,
        NAVIGATOR_EMAIL ,
        NAVIGATOR_GENDER ,
        NAVIGATOR_COUNTRY_OF_RESIDENCE ,
        NAVIGATOR_YEARS_OF_EXPERIENCE ,
        NAVIGATOR_DOB ,
        NAVIGATOR_SPELCIALIST ,
        IS_ICF_CERTIFIED ,
        ICF_NO ,
        IS_VERIFIED ,
        VERIFICATION_COUNTRY_ID ,
        VERIFICATION_STATUS ,
        NAVIGATOR_MOBILE ,
        NAVIGATOR_BIO ,
        NAVIGATOR_KEYWORDS
    ) VALUES (
        'shrisom',
        '[email protected]',
        'MALE',
        'India',
        12,
        '12/01/2019',
        null,
        false,
        null,
        false,
        null,
        'NOT_APPLIED'
        '8961234500',
        null,
        null
    )

Я также сталкиваюсь с той же проблемой. ОШИБКА: В INSERT больше целевых столбцов, чем в выражениях. ЛИНИЯ 16: NAVIGATOR_KEYWORDS