使用批量插入时,我在桌面上遇到死锁问题,查询在
下面INSERT INTO registrationupdates (refreshtime,firstseentime,userdevice,isexist,userpart,expires,ipaddress,contacturi,deviceid)
SELECT refreshtime,firstseentime,userdevice,isexist,userpart,expires,ipaddress,contacturi,(SELECT IFNULL(id,0) FROM devicedetails WHERE deviceip LIKE CONCAT('%',registrarip , '%'))
FROM register_temp_table WHERE isexist=1 ON DUPLICATE KEY UPDATE `refreshtime`=VALUES(refreshtime),`firstseentime`=VALUES(firstseentime),`userdevice`=VALUES(userdevice),`isexist`=VALUES(isexist);
我收到以下错误消息
Deadlock found when trying to get lock; try restarting transaction
' contacturi'是唯一键,并在registrationupdates表上的userpart列上建立索引。
有人可以帮我这个吗?
答案 0 :(得分:0)
您可以将其分为两个查询,以避免在单个查询中插入和选择同一个表。
我认为它可以解决您在避免死锁条件方面的问题