如何将Sequelize ORM与Express连接到ElephantSQL PostgreSQL实例?
问题解决:Sequelize db:create 报 getaddrinfo EAI_FAIL 错误
错误原因
你把完整的PostgreSQL连接URL填到了Sequelize配置的host字段里,但Sequelize的host字段仅接受数据库服务器的域名或IP地址,而非完整连接串。这导致Sequelize尝试将整个URL当作主机名解析,自然触发getaddrinfo EAI_FAIL解析失败错误。而pg客户端支持直接使用完整URL连接,所以pg能正常工作。
另外注意:你配置里的password值(pf10aJ)和URL里的密码(pf10aL)有一个字符差异,后续需要保持一致,避免连接失败。
解决方案
有两种修正方式,任选其一即可:
方式1:拆分连接参数(推荐)
将host改为服务器域名,保留其他独立参数:
{ "development": { "username": "elcaaklk", "password": "oliBfN1v8h7-JPE3_UN3LJeT3-pf10aJ", "database":"elcaaklk", "host": "drona.db.elephantsql.com", "dialect": "postgres", "port": 5432 // ElephantSQL默认使用5432端口,可省略 } }
方式2:使用url字段替代独立参数
直接将完整连接URL填入url字段,无需拆分:
{ "development": { "url": "postgres://elcaaklk:oliBfN1v8h7-JPE3_UN3LJeT3-pf10aJ@drona.db.elephantsql.com/elcaaklk", "dialect": "postgres" } }
验证
修改配置后,重新执行sequelize db:create命令即可正常执行。
内容的提问来源于stack exchange,提问作者Worldwide
相关产品推荐
相关产品推荐

