防止 MySQL 行一次更新两次? (nodejs mysql)

Posted

技术标签:

【中文标题】防止 MySQL 行一次更新两次? (nodejs mysql)【英文标题】:Prevent that a MySQL row updates two times at once? (nodejs mysql) 【发布时间】:2015-07-12 23:56:10 【问题描述】:

我的服务器 nodejs 文件中有这段代码,用于使用 mysql 模块更新 mysql 数据库中的一行,其中 mysql 模块使用每秒更新的 socket.io:

var query_update = mysql.query('UPDATE `auctions` \
SET `random` = ?,`price`= ?,`datetime` = ? WHERE `id` = ?', \
[rand, price, t, auction.id]);  
console.log('\n'+time()+query_update.sql+'\n'); 

我不知道为什么,但某些特定的行条目会一次更新两次。有没有办法以某种方式防止这种情况? 也许甚至 mysql-wise 一行只能每 x 秒更新一次?

我还使用毫秒作为 console.log 输出(在函数 time() 中)来调查这是否在第一次更新后的几毫秒内发生,但它在同一时刻发生,如下所示:

其他拍卖只更新一次,我不知道为什么。

【问题讨论】:

你能记录传入的请求并检查它们是否来过两次吗?基本上,这不是服务器端的问题。 【参考方案1】:

我的问题是我SELECTed 数据并没有使用GROUP BY,而我在之前的SELECT 语句中使用了LEFT JOIN。所以他两次选择了同一行。

【讨论】:

以上是关于防止 MySQL 行一次更新两次? (nodejs mysql)的主要内容,如果未能解决你的问题,请参考以下文章

只用光标选择行一次

nodejs的一个疑问,为啥req被执行了两次

如何防止用户两次上传同一个文件WordPress

使用 NodeJS 在 mySQL 中插入多条记录以防止注入并获取每条记录的 ID

如何防止活动在按下按钮时加载两次

Objective-c 每 10 个字符换行一次(保持单词完整)