Ошибка: неверный синтаксис ввода для типа integer: «» на экспресс-сервере с серверной частью postgres

#javascript #node.js #postgresql #express #server

Вопрос:

Надеюсь, что кто-нибудь может помочь со следующей ошибкой экспресс-сервера, поскольку не уверен, что искать и почему этот тип ошибок продолжает появляться. Он использует серверную часть базы данных postgres. Похоже, это также приводит к сбою сервера.

 error: invalid input syntax for type integer: ""
    at Parser.parseErrorMessage (/home/app/server/node_modules/pg-protocol/dist/parser.js:278:15)
    at Parser.handlePacket (/home/app/server/node_modules/pg-protocol/dist/parser.js:126:29)
    at Parser.parse (/home/app/server/node_modules/pg-protocol/dist/parser.js:39:38)
    at Socket.<anonymous> (/home/app/server/node_modules/pg-protocol/dist/index.js:10:42)
    at Socket.emit (events.js:375:28)
    at addChunk (internal/streams/readable.js:290:12)
    at readableAddChunk (internal/streams/readable.js:265:9)
    at Socket.Readable.push (internal/streams/readable.js:204:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
  length: 101,
  severity: 'ERROR',
  code: '22P02',
  detail: undefined,
  hint: undefined,
  position: undefined,
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'numutils.c',
  line: '323',
  routine: 'pg_strtoint32'
}
 

Есть ли что-то конкретное, что мне нужно искать на основе этого error: invalid input syntax for type integer ?

ОБНОВЛЕНО — основываясь на приведенном ниже комментарии, может ли следующий запрос вставки вызвать эту ошибку?

 const insertLogQuery = `
insert into log (log_id, run_id, s_id, q_id, message)
     values ($1, $2, $3, $4, $5)          
`;
const insertLog = await pool.query(insertLogQuery, [ id, null, null, null, reason ]);
 

где столбцы: run_id , s_id и q_id определяются как целые числа.

Если да, может ли кто-нибудь, пожалуйста, сообщить мне, каков наилучший подход для предотвращения этой ошибки на основе этого кода.

Комментарии:

1. ДА. Вы должны искать преобразования из строковых типов данных integer в свои (нераскрытые) запросы. Ваши данные где-то будут содержать пустую строку.

2. @LaurenzAlbe — Я добавил запрос на вставку, который, как я думаю, может вызвать проблему, основываясь на том, что вы упомянули. Не уверен, как это исправить, хотя, если это проблема.

3. Вы должны использовать процесс, известный как «отладка». Выясните, какой столбец и какая инструкция SQL вызывает ошибку, определите фактическую выданную инструкцию SQL и параметры (например, в файле журнала PostgreSQL). И так далее.