为什么我会得到一个“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
这是一个运行时间过长的进程。我运行了
显示完整的进程列表