我尝试在mysql和nodej中实现死锁的重试策略,但是我缺少一些关于事务提交的信息。
我要做的是,如果我得到了一个错误的死锁,我会在一个短的交易后立即承诺。
我需要运行所有previos查询agian还是重新提交就足够了?
connection.commitTransaction = function () {
return new Promise((resolve, reject) => {
const commit = () => {
connection.commit(function (err) {
if (err) {
console.error("err.code", err.code);
if (err.code === 'ER_LOCK_DEADLOCK') {
setTimeout(() => {
commit();
}, 50);
return
}
return connection.rollback(function () {
connection.end();
reject(err);
});
}
connection.end();
resolve();
});
};
commit();
});
};