簡體   English   中英

使用 sequelize ORM 連接到 node.js 上的 Amazon RDS Postgres 數據庫的問題

[英]Issues connecting to Amazon RDS Postgres database on node.js using sequelize ORM

我目前正在將 Heroku 中設置的環境遷移到 Amazon Web Services 堆棧(RDS PostgreSQL、Elastic Beanstalk)。

我在嘗試通過 sequelize.js ORM 連接到 PostgreSQL 時遇到了一些問題。 錯誤信息如下:

未處理的拒絕 SequelizeHostNotFoundError: getaddrinfo ENOTFOUND [host]。

我可以通過 pgAdmin 連接到數據庫,所以我知道該服務正在運行,並且以下配置已在 Heroku 上運行:

    sequelize = new Sequelize(process.env.DATABASE_URI, {
        dialect: 'postgres',
        protocol: 'postgres',
        logging: true,
        timestamps: false
    })

DATABASE_URI 的格式如下:

postgres://[db_username]:[db_password]@[hostname]:[port]/[db_name]

任何幫助將不勝感激。 提前致謝!

我能夠在這里解決我的問題。 本質上,我通過在環境中正確設置以下內容來解決它。:

  1. 正確格式化 URI -(按照上面的語法,我能夠讓它工作)
  2. 為 Amazon RDS 和 Elastic Beanstalk 啟用安全規定 - 我必須為運行 Elastic Beanstalk 的安全組/實例角色啟用對 Amazon RDS 實例的入站訪問。 (我發現我可以通過本地計算機訪問 RDS。默認情況下,RDS 似乎設置了您正在使用的 IP 以便能夠使用它......這是有道理的..)

我遇到了一個非常相似的問題,結果我的密碼中有一個問號 - 導致一半的密碼和連接 URL 的其余部分被忽略(顯然是 URL 搜索部分的一部分)。

就像是:

new Sequelize("postgres://fred:xj78?23@example.com/db");

我們最終得到用戶名:fred,密碼:xj78,其他都是空白。

將問號轉義為 %3F 可解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM