我正在尝试从我的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);
}
})()
"
到目前为止我已经尝试过的事情:
Client
代替Pool
ssl: true
代替ssl: { rejectUnauthorized: true }
client.query
而不使用pool.connect
connectionTimeoutMillis
(由于在查询只有一行的数据库时,它在本地运行时可以快速解决)?sslmode=require
参数和不使用参数来设置connectionString
^7.4.1
和^7.18.2
我的假设是,Heroku设置或SSL缺少某些内容,将不胜感激,谢谢!