我正在尝试在mysql workbench中运行查询。但它继续运行没有结束,最后抛出1205
错误。最有趣的是我可以更新statusID=5
的另一条记录的相同字段。
update `catalog`.`order_status`
set `Status` = 'CONFIRMED'
where `StatusID` = '4'
答案 0 :(得分:0)
1205表示'锁定等待超时'。您正在尝试更新被锁定的记录。它可以在更新大量记录时锁定/然后达到300秒的超时错误(取决于您用来启动查询的应用程序的配置。)
修复1:找出实际问题:
运行(在MySQL中)
show full processlist;
并确定正在运行的查询并锁定一个/一些行。
然后
kill query <process id>;
你也可以查看你的表的ENGINE - InnoDB允许记录锁定,MyISAM将锁定整个表(推荐:InnoDB)
修复2:如果以上操作无效则轻松获胜:重启mysql服务。这将释放所有锁。
选项3:使用'where'子句索引StatusID字段以便更快地搜索;但这不太可能成为问题。