gpt4 book ai didi

node.js - 尝试批量插入行时发生 Knexjs 错误 : Timeout acquiring a connection. 池可能已满。

转载 作者:行者123 更新时间:2023-12-05 05:15:13 31 4
gpt4 key购买 nike

完整错误:“Knex:获取连接超时。池可能已满。是否缺少 .transacting(trx) 调用?”

我有一个超过 70k 行的 csv/json。插入 15k-17k 后,它停止并抛出上述错误/。代码下方:

  csvtojson({
colParser: {
name: "string",
lastname: "string"
},
checkType: true
}).fromFile(csvfile)
.then(jsonArrary => {
res.json(jsonArrary[0]);
console.log(jsonArrary.length);
jsonArrary.forEach(function(array) {
knex_insert(array);
// pg_insert(array);
});
});

function knex_insert(x) {
db("tablename")
.insert({
name: null_if_empty(x["name"]),
lastname: null_if_empty(x["lastname"])
})
.then(data => {
console.log("success!");
})
.catch(err => {
console.log(err);
});
}

function null_if_empty(value) {
if (value == "") {
return null;
} else {
return value;
}
}

知道发生了什么吗?

谢谢

最佳答案

当您使用 forEach 时,您正在创建成千上万个与数据库的异步连接。映射数据并将所有数据放入一个插入中:

csvtojson({
colParser: {
name: "string",
lastname: "string"
},
checkType: true
})
.fromFile(csvfile)
.then((jsonArrary) => {
const insertingData = jsonArrary.map((info) => {
return {
name: null_if_empty(info["name"]),
lastname: null_if_empty(info["lastname"])
}
});
knex_insert(insertingData)
});

function knex_insert(mappedData) {
db("tablename")
.insert(mappedData)
.then(data => {
console.log("success!");
})
.catch(err => {
console.log(err);
});
}

function null_if_empty(value) {
if (value == "") {
return null;
} else {
return value;
}
}

关于node.js - 尝试批量插入行时发生 Knexjs 错误 : Timeout acquiring a connection. 池可能已满。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51844918/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com