gpt4 book ai didi

node.js + postgres : Syntax error at or near "$1"

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:35 31 4
gpt4 key购买 nike

我无法理解 npm 包 pg 及其“动态语句”。

我希望能够生成 INSERT INTO 语句,但返回时我只得到语法错误

var pg = require('pg');
var connectionString = 'postgres://postgres@localhost/db';

pg.connect(connectionString, function(err, client, done) {
if (err) { return console.error(err); }

var queryConfig = {
text: 'INSERT INTO users($1, $2, $3) VALUES($4, $5, $6);',
values: ['username', 'firstname', 'lastname', 'ab', 'A', 'B']
};

client.query(queryConfig, function (err, result) {
if (err) { return console.error(err); }
done();
});
});

我得到的错误是:

{ [error: syntax error at or near "$1"]
name: 'error',
length: 84,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '19',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
file: 'scan.l',
line: '1053',
routine: 'scanner_yyerror' }

任何人都可以帮助我理解我做错了什么吗?

最佳答案

数据库通常不允许您使用占位符作为标识符(表名、列名……)。 PostgreSQL 提示是因为您试图使用前三个占位符作为列名:

INSERT INTO users($1, $2, $3) ...

您可以将标识符想象成 JavaScript 中的变量名:如果没有某种 eval 诡计,您不能将一个变量名放入另一个变量中。同样,您不能将列名放在占位符中。

您应该指定不带占位符的列名:

var queryConfig = {
text: 'INSERT INTO users(username, firstname, lastname) VALUES($1, $2, $3);',
values: ['ab', 'A', 'B']
};

关于node.js + postgres : Syntax error at or near "$1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795083/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com