所以我psql'd并创建了表用户;
CREATE TABLE users (
id integer NOT NULL,
username text
);
字符串
我可以通过执行SELECT * FROM users;
来抓取行
然而,当我使用node.js和库模块pg进行调用时,我得到了臭名昭著的关系并不存在。
const createQuery = {text: "INSERT INTO users(id, username) VALUES($1)",values: values}
const { rows } = await db.query(createQuery);
型
在完成服务器迁移之前,我没有遇到这个问题。
3条答案
按热度按时间pgx2nnw81#
这种情况可能有两个原因:
1.您已经在不同的模式中创建了此关系。PostgreSQL允许您将关系组织到称为模式的不同名称空间中。要指定架构
CREATE TABLE myschema.users (...)
,类似地,CREATE TABLE myschema.users
。如果没有指定模式名,PostgreSQL将使用defualt模式,通常是public
。要检查您的关系属于哪个模式,请运行此查询SELECT table_schema, table_name FROM information_schema.tables WHERE table_name = 'users'
。1.您可以使用
SELECT current_database()
和SELECT inet_server_addr()
查询来检查连接到的数据库和主机,以防连接到错误的数据库/主机。insrf1ej2#
最有可能的选择是,该表是在与node.js中使用的默认模式不同的模式中创建的。
您可以通过查询表
information_schema.tables
来搜索表所属的架构:字符串
有了这些信息,您现在可以在从node.js运行的查询中使用正确的模式名称来限定表名。假设模式名称是
myschema
,您可以:型
nuypyhwy3#
默认情况下,当你不指定任何模式时,postgres会指向公共模式。请使用模式名称/数据库名称沿着表名称。确保在代码中提供了正确的数据库配置。如果配置正确,甚至不需要在查询中提供模式别名。