10

我的[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);
    });
});
4

6 回答 6

3

我不确定你们中是否有人像我一样面临类似的情况。

请确保您使用正确的用户/密码访问正确的数据库主机。

我发现我连接到错误的数据库:(

于 2020-03-11T18:29:34.083 回答
2

直接在您client.query('INSERT...')调用之前,运行以下命令以确保您的关系可在当前连接上访问:

client.query('SELECT * FROM pg_catalog.pg_tables', function(err, result) {
  console.log(result);
});

如果您causes在结果中看不到您的关系,则该关系不存在,或者它是在不同的用户下创建的。

于 2013-11-13T22:19:29.410 回答
1

这可能是一个案例折叠问题。请参阅此答案有关 SQL 语法的 PostgreSQL 文档

编辑后:看起来这不是案例折叠问题。检查search_path(SHOW search_pathSELECT current_setting('search_path')) 并将其与表所在的模式 ( \dt+ tablename) 进行比较,以确保表在客户端的路径上。

还要确保您连接到同一个数据库。

于 2013-11-12T23:44:30.330 回答
0

如果您使用 Postgres URL 进行连接,请在其中明确指定数据库。有时,如果您不这样做,您使用的任何库都默认将您的用户名作为数据库,这可能是错误的。我刚遇到这种情况。请参阅PostgreSQL 连接 URL

于 2020-10-11T18:12:36.133 回答
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();
});
于 2018-10-15T08:18:40.727 回答
-1

尝试使用用户输入表名创建表然后插入数据库时​​,我遇到了类似的错误。

我找到的解决方案是创建创建表并作为两个单独的函数插入,背靠背调用函数,但第二个函数有延迟。

指导代码如下:

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
于 2018-08-29T13:53:15.447 回答