我正在尝试从我的 Heroku 节点应用程序连接到 Postgres 数据库,该应用程序在本地运行时工作,无论是通过节点还是通过运行heroku local web
命令,但是在 Heroku 上运行它时,它在等待时超时pool.connect
我正在通过 Heroku 控制台运行以下代码片段(我也尝试在我的应用程序中直接使用此代码,但这比每次重新部署更有效):
node -e "
const { Pool } = require('pg');
const pool = new Pool({
connectionTimeoutMillis: 15000,
connectionString: process.env.DATABASE_URL + '?sslmode=require',
ssl: {
rejectUnauthorized: true
}
});
console.log('pool created');
(async() => {
try {
console.log('connecting');
const client = await pool.connect(); // this never resolves
console.log('querying');
const { rows } = await client.query('SELECT * FROM test_table LIMIT 1;');
console.log('query success', rows);
client.release()
} catch (error) {
console.log('query error', error);
}
})()
"
到目前为止我尝试过的事情:
- 使用 pg
Client
而不是Pool
- 使用
ssl: true
代替ssl: { rejectUnauthorized: true }
- 使用
client.query
而不使用pool.connect
- 增加和省略
connectionTimeoutMillis
(因为我正在查询只有一行的数据库,所以在本地运行时会很快解决) - 我也尝试过使用回调和承诺而不是 async / await
- 我尝试使用
?sslmode=require
参数和不 使用参数设置 connectionString- 到目前为止
^7.4.1
,我已经尝试过使用 pg 版本^7.18.2
- 到目前为止
我的假设是 Heroku 设置或 SSL 缺少一些东西,任何帮助将不胜感激,谢谢!