的复制品
我正在尝试更新数据库特定表上的一行。
UPDATE `Search`.`credentials` SET `status`='0' WHERE `id`='30';而我正在接受错误
ERROR 1205: 1205: Lock wait timeout exceeded; try restarting transaction
SQL Statement: UPDATE `Search`.`credentials` SET `status`='0' WHERE `id`='30'我把超时设置为200
show variables like 'innodb_lock_wait_timeout';
+ _ innodb_lock_wait_timeout _(?)?
数据库被使用,但不是所有时间,也不是我想要更新的表。
mysql> show open tables where in_use>0;
+-----------+---------------------------+--------+--------------------+ _m_~_-+---------------------------+--------+--------------------+ _-+---------------------------+--------+--------------------+___C___( db1 ___db1 /T1591-1996技术技术 /T1583-1991----------------------+--------+---------------------+
有时,有更多关于搜索数据库的行,但是没有使用我需要更新的相同表的行。
从程序列表中我得到
mysql> SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where db="afmSearch";+----+------+-------------+--------+---------+------+-------+------+ _‘_-----+-------------+--------+---------+------+-------+------+ _+------+-------------+--------+---------+------+-------+------+
有什么想法吗?
发布于 2017-02-28 21:22:41
其他一些连接运行的时间很长--可能超过50秒。
另一个连接可能处于autocommit=0模式,但只是坐在那里,忘记执行COMMIT。
如果可以的话,在PROCESSLIST超时之前获取它。也做SHOW ENGINE=InnoDB STATUS;
提供SHOW CREATE TABLE credentials。查找对该表的其他写入,并检查索引的使用情况。
发布于 2017-03-01 13:20:32
问题(很可能)是,我没有关闭ResultSet,在Java内部。奇怪的是,MySql并没有告诉我有人在使用那张桌子!更不用说,当结果集的方法终止时,我认为结果集是封闭的。显然不是;)
发布于 2021-06-02 19:33:25
尝试查看您的MySQL服务器在运行中是否有一个进程。
要查看这一点,请在MySQL客户端上运行命令:
SHOW FULL PROCESSLIST;查看id、state和info列并分析问题。找到问题后,用以下方法终止该进程:
KILL <PROCESS ID>;https://dba.stackexchange.com/questions/165722
复制相似问题