nodejs/postgresql错误

mfuanj7w  于 2021-10-10  发布在  Java
关注(0)|答案(0)|浏览(279)

我正在设置一个连接到多个数据库的节点应用程序。我正在使用Map为我的所有数据库创建池,例如:

const stnPool = new Map();
async function getOtherDb(stnName){
   if(!stnPool.has(stnName)){
    stnPool.set(stnName,  new Pool({
      host: 'localhost',
      database: stnName.toLowerCase(),
      user: USERNAME,
      password: PASSWORD,
      port: 5432,
      max: 2000,
      idleTimeoutMillis: 0,
      connectionTimeoutMillis: 0,
    }))
   }
   return stnPool.get(stnName);
}

postgresql目前有10个“站点”数据库。我有10台远程服务器连接到我的服务器,每3秒钟上传一次数据。我还有x个客户端,可以连接以实时查看上传的数据。bot服务器和客户端连接通过WebSocket连接到上载/请求数据。
要建立aan查询池连接,请执行以下操作:

var uvDb = await db.getOtherDb("wx_uv")

if( uvDb != -1 ) {
    const dbT = await uvDb.connect()
    ... do various db queries ...
    dbT.release()
}

在获取服务器上载和客户端请求数小时后,我收到以下错误:

/.../node/node_modules/pg-protocol/dist/parser.js:287
const message = name === 'notice' ? new messages_1.NoticeMessage(length, messageValue) : new messages_1.DatabaseError(messageValue, length, name);
^
error: parallel worker failed to initialize
at Parser.parseErrorMessage (/.../node/node_modules/pg-protocol/dist/parser.js:287:98)
at Parser.handlePacket (/.../node/node_modules/pg-protocol/dist/parser.js:126:29)
at Parser.parse (/.../node/node_modules/pg-protocol/dist/parser.js:39:38)
at Socket.<anonymous> (/.../node/node_modules/pg-protocol/dist/index.js:11:42)
at Socket.emit (node:events:365:28)
at addChunk (node:internal/streams/readable:314:12)
at readableAddChunk (node:internal/streams/readable:289:9)
at Socket.Readable.push (node:internal/streams/readable:228:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
length: 163,
severity: 'ERROR',
code: '55000',
detail: undefined,
hint: 'More details may be available in the server log.',
position: undefined,
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parallel.c',
line: '826',
routine: 'WaitForParallelWorkersToFinish'
}

有人知道这是什么原因吗?
======更新=====尝试添加尝试/捕获以释放连接:

if( uvDb != -1 ) {
    const dbT = await uvDb.connect()
    try{
        ... do various db queries ...
        dbT.release()
    } catch (err) {
        dbT.release()
    }
}

但现在我有其他错误。。。
“错误:与并行工作程序的连接中断”
“错误:并行工作程序未能初始化”

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题