首页 > 解决方案 > 如何从 AWS RDS 连接到没有“数据库”名称的 PostgreSQL 数据库

问题描述

使用节点 pg 包,pg我正在尝试连接到在 AWS-RDS 中创建的 PostgreSQL 数据库。我相信创建实例时没有给数据库命名,请注意实例与数据库不同。尝试使用ClientPoolpg我的语法连接时是

const client = new Client({
  host     : <<RDS ENDPOINT>>,
  user     : <<RDS DB USERNAME>>,
  password : <<RDS DB PASSWORD>>,
  port     : <<RDS DB PORT>>
});
client.connect()
  .then(data => {
    console.log('connected');
  })
  .catch(err => {
    console.log(err);
  })

但是每次我都回来了error: database <<linux user name>> does not exist

现在创建一个不同的 PostgreSQL 实例并为数据库提供一个名称,我可以将一个database道具添加到我的Client对象配置中,一切正常,我返回一个控制台日志connected

所以我的问题是,我应该如何连接到 AWS-RDS 上的数据库而不在我的配置中提供database道具?Client

编辑

编辑 1

提供一个database空字符串的道具将被我的 linux 用户名覆盖

标签: node.jspostgresqlamazon-web-servicesamazon-rds

解决方案


使用该node-postgres包,您需要在客户端/池配置对象中提供数据库道具。如果您的 PostgreSQL 数据库没有名称,假设您使用 AWS-RDS 创建它,那么此数据库名称将默认为postgres. 简单地提供数据库道具postgres应该可以解决您在使用未命名数据库时遇到的任何问题。

const client = new Client({
  host     : <<RDS ENDPOINT>>,
  user     : <<RDS DB USERNAME>>,
  password : <<RDS DB PASSWORD>>,
  port     : <<RDS DB PORT>>,
  database : 'postgres' // supplying a database name with `postgres`

});

推荐阅读