2017-06-17 44 views
0

我已經創建了一個名爲user在postgres中包含id, name, family列(id是自動增量)的表。我想插入到Postgres查詢喜歡以下內容:角色不存在和語法錯誤在NodeJs插入查詢postgresql

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!");   
}); 

不過,我有以下錯誤:

Syntax error near user

另外,我還嘗試了不同的方法來發送喜歡的請求以下內容:

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)}); 

但我得到了以下錯誤:

role \"UserName\" does not exist

此外,錯誤正文中的UserName(服務器的名稱)與數據庫的username不相同。

我檢查了所有可能的謬誤,如用戶名和密碼的正確性。

因此,問題是什麼問題?

回答

0

所有這些問題都來自表名。如this post中所述,user的名稱是postgres中的保留名稱。因此,如果更改user表的名稱(如users),則會通過這些錯誤。

+0

重命名錶不是最好的解決方案。看到我張貼的答案;) –

+0

@ vitaly-t我看到這篇文章https://stackoverflow.com/questions/11919391/postgresql-error-fatal-role-username-does-not-exist之前。事實上,我找到了解決方案,但在這裏提到的問題可以從其他窗口中看到。另外,對於我的情況,更改表格的名稱更好。無論如何,謝謝你的迴應。 – OmG

0

user是PostgreSQL中的一個保留字,指的是當前登錄的用戶。因此,爲了能夠使用名稱爲user的表格,名稱必須始終位於雙引號內 - "user"