Mysql 有没有办法让KNEX错误也记录在代码中发生的位置?
有些Knex错误会记录发生错误的文件和行,但许多错误不会记录。这使得调试变得不必要的单调乏味。Mysql 有没有办法让KNEX错误也记录在代码中发生的位置?,mysql,node.js,knex.js,Mysql,Node.js,Knex.js,有些Knex错误会记录发生错误的文件和行,但许多错误不会记录。这使得调试变得不必要的单调乏味。.catch((err)=>{console.log(err)})应该处理这个问题吗? 事实上,代码尝试重复大约4次(我希望它尝试一次并停止,绝对不需要更多的尝试,永远-它只会在进一步输入数据库时把事情搞砸) 有些Knex错误会记录发生错误的文件和行,但许多错误不会记录 你能给我们一些能消除错误的查询示例吗 async function repeatInsert(retryTimes = 0) {
.catch((err)=>{console.log(err)})
应该处理这个问题吗?
事实上,代码尝试重复大约4次(我希望它尝试一次并停止,绝对不需要更多的尝试,永远-它只会在进一步输入数据库时把事情搞砸)
有些Knex错误会记录发生错误的文件和行,但许多错误不会记录
你能给我们一些能消除错误的查询示例吗
async function repeatInsert(retryTimes = 0) {
try {
await knex.insert().into();
} catch(err) {
// handle known error
if (err.isKnown) {
throw err;
}
// and retry
if (retryTimes < 4) {
return await repeatInsert(retryTimes + 1);
}
}
}
我是Knex的忠实用户,在我的开发过程中,几乎所有的错误都会显示它们发生的文件和行,除非有两种情况:
Runner.prototype.query
,识别TransactionArlyCompletedError,并记录更多信息:sql
或绑定
on catch子句
Knex:error Pool2-error:Pool.release():资源不是池的成员
这是另一个取决于数据库环境和连接包的问题
事实上,代码尝试重复大约4次
如果你重复使用Promise chain编写的代码,我认为它不会抛出4次,它应该在第一次抛出时爆炸
并发执行的查询
如果数组中的任何承诺被拒绝,或者映射器函数返回的任何承诺被拒绝,那么返回的承诺也会被拒绝
如果使用尝试catch
和异步等待
但是它不会重复4次,如果您已经知道错误类型,同时,如果您不知道会抛出什么错误,为什么不只执行一次以找出错误
async function repeatInsert(retryTimes = 0) {
try {
await knex.insert().into();
} catch(err) {
// handle known error
if (err.isKnown) {
throw err;
}
// and retry
if (retryTimes < 4) {
return await repeatInsert(retryTimes + 1);
}
}
}
异步函数repeatInsert(retryTimes=0){
试一试{
等待knex.insert().into();
}捕捉(错误){
//处理已知错误
如果(错误已知){
犯错误;
}
//然后重试
如果(重试次数<4){
返回等待重复插入(retryTimes+1);
}
}
}
async function repeatInsert(retryTimes = 0) {
try {
await knex.insert().into();
} catch(err) {
// handle known error
if (err.isKnown) {
throw err;
}
// and retry
if (retryTimes < 4) {
return await repeatInsert(retryTimes + 1);
}
}
}