#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). И так далее.