在 nodejs 中连接到 heroku postgres db 时出错
Error connecting to heroku postgres db in nodejs
我的数据库升级到 10.2 后似乎无法连接。
我正在使用 pg 7.4.2 npm 包。
需要说明的是,我已经使用附加了 ?ssl=true 的相同连接字符串成功连接了 6 个月。
我在通过池或客户端连接时遇到此错误。
AssertionError [ERR_ASSERTION]: false == true
at Object.exports.connect (_tls_wrap.js:1099:3)
at Socket.<anonymous> (/home/e/express/testpg/node_modules/pg/lib/connection.js:94:23)
at Object.onceWrapper (events.js:219:13)
at Socket.emit (events.js:127:13)
at Socket.emit (domain.js:421:20)
at addChunk (_stream_readable.js:269:12)
at readableAddChunk (_stream_readable.js:256:11)
at Socket.Readable.push (_stream_readable.js:213:10)
at TCP.onread (net.js:598:20)
我现在正在对完整的 postgres 连接字符串进行硬编码,因此环境变量没有问题。
我已经尝试 adding/removing ?ssl=true 到连接字符串的末尾,并从构造函数中尝试 adding/removing ssl:true 。我也尝试过有和没有承诺。无论在本地还是部署到 heroku,都出现相同的错误。
进口:
import { Pool, Client } from 'pg'
方法一:
let pool = new Pool({
connectionString: csnew,
ssl: true
})
pool.connect().then( client => {
console.log('connected')
})
.catch(e=> {
console.log(e)
})
方法二:
let pgclient = new Client({
connectionString: csnew,
ssl: true
})
pgclient.connect().then( () => {
console.log('connected')
}).catch(e=> {
console.log(e)
})
那是因为 v7.4.2 破坏了它的 SSL 支持。 Here's the open issue.
您需要严格使用v7.4.1直到问题解决。
更新
版本 7.4.3 修复了该问题。
我的数据库升级到 10.2 后似乎无法连接。
我正在使用 pg 7.4.2 npm 包。
需要说明的是,我已经使用附加了 ?ssl=true 的相同连接字符串成功连接了 6 个月。
我在通过池或客户端连接时遇到此错误。
AssertionError [ERR_ASSERTION]: false == true
at Object.exports.connect (_tls_wrap.js:1099:3)
at Socket.<anonymous> (/home/e/express/testpg/node_modules/pg/lib/connection.js:94:23)
at Object.onceWrapper (events.js:219:13)
at Socket.emit (events.js:127:13)
at Socket.emit (domain.js:421:20)
at addChunk (_stream_readable.js:269:12)
at readableAddChunk (_stream_readable.js:256:11)
at Socket.Readable.push (_stream_readable.js:213:10)
at TCP.onread (net.js:598:20)
我现在正在对完整的 postgres 连接字符串进行硬编码,因此环境变量没有问题。
我已经尝试 adding/removing ?ssl=true 到连接字符串的末尾,并从构造函数中尝试 adding/removing ssl:true 。我也尝试过有和没有承诺。无论在本地还是部署到 heroku,都出现相同的错误。
进口:
import { Pool, Client } from 'pg'
方法一:
let pool = new Pool({
connectionString: csnew,
ssl: true
})
pool.connect().then( client => {
console.log('connected')
})
.catch(e=> {
console.log(e)
})
方法二:
let pgclient = new Client({
connectionString: csnew,
ssl: true
})
pgclient.connect().then( () => {
console.log('connected')
}).catch(e=> {
console.log(e)
})
那是因为 v7.4.2 破坏了它的 SSL 支持。 Here's the open issue.
您需要严格使用v7.4.1直到问题解决。
更新
版本 7.4.3 修复了该问题。