【问题标题】:How to connect to PostgreSQL DB without a "database" name from AWS RDS如何从 AWS RDS 连接到没有“数据库”名称的 PostgreSQL 数据库
【发布时间】:2019-01-29 10:32:39
【问题描述】:

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

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 &lt;&lt;linux user name&gt;&gt; does not exist

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

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

编辑

编辑 1

提供带有空字符串的 database 属性将被我的 linux 用户名覆盖

【问题讨论】:

  • 当您创建 Postgres 数据库时,它会在 Additional configuration &gt; Database options &gt; Initial database name 下显示:“如果您不指定数据库名称,Amazon RDS 不会创建数据库。” 一些客户端可能没有数据库就无法连接。

标签: node.js postgresql amazon-web-services amazon-rds


【解决方案1】:

使用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`

});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 2021-11-14
  • 2021-07-03
  • 2016-07-08
  • 2017-11-09
  • 2019-05-27
相关资源
最近更新 更多