sql update where set 字段相同,这个要怎么写呢

2021-10-10 13:13:30 +08:00
 kangsgo
UPDATE fa_iot_order SET card_id=1 WHERE card_id =2;

我这么写会超时

1205 - Lock wait timeout exceeded; try restarting transaction

时间: 50.634s

1958 次点击
所在节点    MySQL
9 条回复
kiracyan
2021-10-10 13:22:59 +08:00
你的表多大啊 这个字段加索引了吗 加个数量限制 多执行几次
jindeq
2021-10-10 13:23:11 +08:00
表里啥情况都不知道怎么看?数据量太大且一直有更新,这个锁肯定不能加的上
kangsgo
2021-10-10 13:29:25 +08:00
@kiracyan
@jindeq
是因为太大的原因么,这个表有 10 万条数据
```
UPDATE fa_iot_order SET card_id=1 WHERE card_id =2 LIMIT 1;
```
这样限制一下么
kiracyan
2021-10-10 13:33:54 +08:00
@kangsgo 10 万不算多 表是一直有数据插入吗
kangsgo
2021-10-10 13:37:15 +08:00
@kiracyan 我是本地查服务器的,会不会这个有影响。一直有查询,插入应该比较少
mchl
2021-10-10 14:13:37 +08:00
start transaction;
update…
commit;
msg7086
2021-10-10 15:51:15 +08:00
比如说 limit 1000,然后反复跑到跑完为止啊。
512357301
2021-10-10 15:54:54 +08:00
先加个索引吧,加索引是基本操作了,10 万条全表遍历一遍也很慢的。
你的这个保存按照提示是说加锁超时,也可能是其他的查询或者写入操作一直在占用着整个表导致你这段语句没法锁表
512357301
2021-10-10 15:55:38 +08:00
@512357301 打错字了,你的这个报错按照提示是说加锁超时

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/806833

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX