为什么我会得到一个“a”;已超过锁定等待超时时间";尝试更新MySQL条目时出错?
我有一个数据库,我试图更新其中的行值,但我得到了一个“锁定等待超时”错误。这是该表的外观:为什么我会得到一个“a”;已超过锁定等待超时时间";尝试更新MySQL条目时出错?,mysql,Mysql,我有一个数据库,我试图更新其中的行值,但我得到了一个“锁定等待超时”错误。这是该表的外观: mysql> use rti; Database changed mysql> explain resin_products; +--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extr
mysql> use rti;
Database changed
mysql> explain resin_products;
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| resin_product_id | int(11) | NO | PRI | NULL | |
| manufacturer | varchar(45) | YES | | NULL | |
| name | varchar(45) | YES | | NULL | |
| model_number | varchar(45) | YES | | NULL | |
| resin_type | varchar(45) | YES | | NULL | |
| primary_type | varchar(45) | YES | | NULL | |
| group | varchar(45) | YES | | NULL | |
| teir | varchar(45) | YES | | NULL | |
| chemical_structure | varchar(45) | YES | | NULL | |
| physical_structure | varchar(45) | YES | | NULL | |
| color | varchar(45) | YES | | NULL | |
| total_capacity | varchar(45) | YES | | NULL | |
| salt_split_CAP | varchar(45) | YES | | NULL | |
| price_per_cuft | varchar(45) | YES | | NULL | |
| comments | varchar(500) | YES | | NULL | |
+--------------------+--------------+------+-----+---------+-------+
命令如下:
mysql> UPDATE resin_products SET price_per_cuft='00.04' WHERE resin_product_id=1;
这是大约30秒后发生的错误:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
这是我的“lock_wait”变量设置的值:
mysql> show variables like 'lock_wait_timeout';
+-------------------+----------+
| Variable_name | Value |
+-------------------+----------+
| lock_wait_timeout | 31536000 |
+-------------------+----------+
1 row in set (0.00 sec)
首先查看锁定表的列表:
show open tables where in_use>0;
您还可以看到正在使用此表的线程:
show full processlist;
然后你就可以杀死那根线了
kill 141;
可能重复或查看>显示引擎INNODB状态的结果;我没有收到任何开放表的问题。这就是我得到的:mysql>显示打开的表,其中in_use>0;空集(0.00秒)我将尝试再次运行产生错误的命令,然后立即使用show open tables(显示打开的表),其中in_use>0;您可以通过以下命令查看更多状态:
SHOW ENGINE INNODB status\G
这是一个运行时间过长的进程。我运行了显示完整的进程列表然后把他们都杀了。这就解决了问题。