用于将NodeJ中的查询插入postgresql中的角色不存在和语法错误

时间:2017-06-17 07:35:19

标签: node.js postgresql

我在postgres中创建了一个名为user的表,其中包含id, name, family列(id为自动增量)。我要插入postgres的查询如下:

var config = {
    user: 'username',
    database: 'databaseName',
    password: 'password',
    host: 'localhost',
    port: 5432,
    max: 10,
    idleTimeoutMillis: 30000
};

const pool = new postgre.Pool(config);
let query = "INSERT INTO user(name, family) VALUES ('name', 'family')";
pool.query(query, [], function (err, result) {
    if (err) {
        return console.error("error running query", err);
    }
    console.log("done!");        
});

但是,我收到了以下错误:

  

用户附近的语法错误

另外,我尝试过不同的方法来发送请求,如下所示:

const connectionString = "http://localhost:5432/databaseName?username=username&password=password";
const client = new postgre.Client(connectionString);
client.connect();
const query = client.query("INSERT INTO user(id, name, family) VALUES ('name', 'family')");
query.then(x => { console.log("done!")});
query.catch(x => { console.log(x)});

但是我收到了以下错误:

  

角色\"用户名\"不存在

此外,错误正文中的UserName(服务器名称)与数据库的username不同。

我检查了所有可能的谬误,例如用户名和密码的正确性。

因此,问题是什么问题?

2 个答案:

答案 0 :(得分:0)

所有这些问题都来自表名。如this post中所述,user的名称是postgres中的保留名称。因此,如果更改user表的名称(例如users),则会传递这些错误。

答案 1 :(得分:0)

user是PostgreSQL中的保留字,指的是当前登录的用户。因此,为了能够使用名称为user的表格,名称必须始终位于双引号内 - "user"