我的节点应用程序出现[error: relation "causes" does not exist]
错误。这种关系确实存在,我不确定问题是什么。
我用
创建了表格CREATE TABLE causes (
cause_id bigint NOT NULL default nextval('causes_cause_id_seq'::regclass),
cause_name varchar(40) NOT NULL,
goal integer,
sponsor varchar(30),
organization varchar(30),
submitter varchar(30),
address varchar(34),
balance numeric
);
这是给出错误的查询:
client = pg.connect(connectionString, function(err, client, done){
if(err) console.log(err);
client.query('INSERT INTO causes (cause_name, goal, organization, sponsor, submitter) VALUES ($1,$2,$3,$4,$5) RETURNING *', r, function(err, result){
if(err) console.log(err);
});
});
答案 0 :(得分:1)
这可能是折叠问题。请参阅this answer和the PostgreSQL documentation on SQL syntax。
修改后:看起来不是案例折叠问题。检查search_path
(SHOW search_path
或SELECT current_setting('search_path')
)并将其与表格所在的架构(\dt+ tablename
)进行比较,以确保该表位于客户端的路径上。
还要确保您连接到同一个数据库。
答案 1 :(得分:1)
在client.query('INSERT...')
电话会议之前,请运行以下内容以确保您的关系可以在当前连接上访问:
client.query('SELECT * FROM pg_catalog.pg_tables', function(err, result) {
console.log(result);
});
如果您在结果中未看到causes
关系,则表明该关系不存在,或者该关系是在其他用户下创建的。
答案 2 :(得分:1)
我不确定你们中是否有人像我一样面临类似的情况。
请确保您对正确的数据库主机使用了正确的用户名/密码。
我发现我连接到错误的数据库:(
答案 3 :(得分:0)
尝试使用用户输入的表名称创建表然后插入数据库时,我遇到了类似的错误。
我发现的解决方案是创建create table并将其作为两个单独的函数插入,将这些函数背对背调用,但是第二个函数会有延迟。
指导代码如下:
function createTable(){
// your create table query here
}
function pushData(){
// your insert into table query here
}
createTable()
setTimeout(postTable, 3000); // for 3 seconds, can make is less, I used 3 secs to be safe
答案 4 :(得分:0)
我有同样的问题。我正在查询新创建的表Example
。这是我的代码:
const { Pool, Client } = require('pg');
const dbClient = new Client({
user: 'postgres',
host: 'localhost',
database: 'postgres',
password: 'test',
port: 5432,
});
dbClient.connect();
dbClient.query('SELECT * from Example', (err, res) => {
console.log(err, res);
dbClient.end();
});
我仔细检查了连接参数和任何可能的错字。原来,在pg
中,您需要将表名用引号引起来:
dbClient.query('SELECT * from "Example"', (err, res) => {
console.log(err, res);
dbClient.end();
});
答案 5 :(得分:0)
如果要使用Postgres URL连接,请在其中明确指定数据库。有时,如果您不这样做,则无论您使用什么库,都默认使用用户名作为数据库,这可能是错误的。我只是发生在我身上。参见PostgreSQL Connection URL