我正在尝试使用node-postgres连接到远程数据库。
我可以使用psql客户端进行连接,但在尝试运行此命令时收到错误Connection terminated unexpectedly
(使用与psql客户端相同的连接字符串):
const { Pool, Client } = require('pg')
const connectionString = '...'
const pool = new Pool({
connectionString: connectionString,
})
pool.query('SELECT NOW()', (err, res) => {
console.log(err, res)
pool.end()
})
const client = new Client({
connectionString: connectionString,
})
client.connect()
client.query('SELECT NOW()', (err, res) => {
console.log(err, res)
client.end()
})
我也一直在尝试与Sequelize ORM连接,但得到了同样的错误。
@编辑
使用本机模式修复了使用pg和sequelize进行客户端查询的问题const { Pool, Client } = require('pg').native
9条答案
按热度按时间c0vxltue1#
我开始遇到同样的问题,但只是针对长时间查询,我找到了一个可能的解决方案,方法是在Pool构造函数中设置idleTimeoutMillis,例如设置为20000(默认值为10000)
请参见https://node-postgres.com/api/pool#new-pool-config-object-
czfnxgou2#
处理可能需要几个小时的进程时,我找到了使用
Pool
但将idleTimeoutMillis
和connectionTimeoutMillis
都设置为0的解决方案。cig3rfwq3#
以上所有的解决方案都不适合我,我在网上搜索,但没有找到任何合适的解决方案,最后,我发现我在
pg
客户端输入了错误的端口号。这是我找到我的实际端口号的地方:第一个月第一个月〉第一个月第二个月〉第一个月第三个月第一个月
并在我的代码中更新了它。问题就解决了
8iwquhpp4#
使用pg:
续集:
lztngnrs5#
我第一次使用Postgres时遇到这个错误。我不知道Postgres的默认端口是5432。在我的DB节点配置中将端口更改为5432解决了这个问题。
iqjalb3h6#
我做了大量的研究来解决这个问题,这些
pg
配置解决了我的问题cxfofazt7#
这可能与最小池大小设置为大于0的数字有关。
即使连接被终止,连接池也会保持最小的连接数。将最小连接数指定为0,并定义一个合适的空闲超时值(可能是1-5分钟),可以防止这种情况发生。
这在knex的一期杂志上有讨论。
rwqw0loc8#
pdtvr36n9#
试试这个: