如何从AWS RDS连接到没有“database”名称的PostgreSQL数据库

11

使用Node.js的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);
  })

但每次我返回时都会出现错误:数据库 <<linux用户名>> 不存在
现在,创建一个不同的PostgreSQL实例,并提供一个名称给DB,我可以将database属性添加到我的Client对象配置中,一切正常,我会得到一个connected的控制台日志。
所以我的问题是,我该如何在不提供Client配置中的database属性的情况下连接到AWS-RDS上的DB?

编辑

编辑1

使用空字符串提供一个database属性将被覆盖为我的Linux用户名。

2
创建Postgres数据库时,在“附加配置>数据库选项>初始数据库名称”下,它会说:“如果您没有指定数据库名称,则Amazon RDS不会创建数据库。”一些客户端可能无法在没有数据库的情况下连接。 - j08lue
1个回答

14

使用node-postgres包时,您需要在Client/Pool配置对象中提供一个数据库属性。如果您的PostgreSQL DB没有名称,比如您是使用AWS-RDS创建了它,则此DB名称将默认为postgres。只需使用postgres提供数据库属性即可解决任何与未命名DB相关的问题。

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`

});

我花了很长时间才弄明白。这也在这里提到:https://dev59.com/m1gQ5IYBdhLWcg3wORZJ,但在官方文档中找不到。 - dz902

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接