如何使用Digital Ocean绑定变量引用数据库属性?解决NodeJS连Postgres超时
DigitalOcean App Platform连接PostgreSQL超时问题排查:环境变量绑定错误
问题背景
我在DigitalOcean上托管了PostgreSQL数据库集群和App Platform服务,尝试将Node.js应用连接到PostgreSQL时出现连接超时错误。目前需要确认是否正确使用了可绑定的应用环境变量,怀疑是变量未解析导致CA证书无法获取,进而引发超时问题。
相关信息
- 数据库集群名称:
demo - 数据库连接池名称:
Demo - 默认数据库名称:
defaultdb - App Platform应用名称:
demo1
环境变量测试情况
我尝试了多种变量组合,但执行echo $MY_VAR命令时,变量均未被解析,仍显示原始绑定语法:
# 仅使用数据库集群名称测试 apps@client:~$ echo $TEST1 ${demo.HOSTNAME} # 使用_self(当前应用上下文)测试 apps@client:~$ echo $TEST2 ${_self.HOSTNAME} # 使用<数据库集群名>.<连接池名>.<环境变量>格式测试 apps@client:~$ echo $TEST3 ${demo.Demo.HOSTNAME} # 使用<应用名>.<连接池名>.<环境变量>格式测试 apps@client:~$ echo $TEST4 ${demo1.Demo.HOSTNAME}
我想知道在DigitalOcean应用控制台执行echo $DB_HOSTNAME时,能正确输出数据库主机名的语法是什么。
Node.js PostgreSQL配置示例
我希望通过数据库应用环境变量实现配置,代码中的PostgreSQL配置如下:
// PostgreSQL配置示例 const postgresConfig = { user: process.env.PG_USER, password: process.env.PG_PASSWORD, host: process.env.PG_HOST, database: process.env.PG_DATABASE, port: process.env.PG_PORT, ssl: { require: true, rejectUnauthorized: true, ca: process.env.PG_CA_CERT, }, };
错误信息
执行PostgreSQL查询时出现以下超时错误:
Error: connect ETIMEDOUT 10.x.y.z:25061 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) { errno: -110, code: 'ETIMEDOUT', syscall: 'connect', address: '10.x.y.x', port: 25061 }
内容的提问来源于stack exchange,提问作者Gregg
相关产品推荐
相关产品推荐

