node操作mysql库有没有sql锁
发布于 10 年前 作者 racyily 4235 次浏览 最后一次编辑是 8 年前

有这么个情况,我要在很多情况下进行 truncate table --> insert table(这两部是顺序执行的),问题是如果有多次同时进行这两步操作时,mysql会告诉我主键已经存在了。也就是同时出现了insert table的情况,有没有办法避免呢?最好是有正规些的解决办法。

我目前做的处理时把多次同时进行这两步操作改成了加入循环队列,一次执行完才会执行下一次,类似于node.js本身的事件轮询。但是我总觉得这样做不是很正规,因为这个问题是由于mysql的并发造成的,而不是node.js。

3 回复

是你的并发吧,

mysql.query(truncate table, function () {
    mysql.query(insert table, function () {

   });
})

不是这个意思,是多个高频率的重复你的代码,这个操作都是异步的,mysql可能会有并发啊,

@racyily 有些操作就需要做事务保证了,当你插入的时候,如果异常,就需要rollback, mysql 事务可以参考使用 bearcat-dao

回到顶部