mysql 1205错误

关于mysql--General error: 1205 Lock wait timeout exceeded错误。

遇见问题环境:magento操作产品时遇到。

错误提示:

SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction, query was: UPDATE `catalog_product_entity` SET `entity_type_id` = ?, `attribute_set_id` = ?, `type_id` = ?, `sku` = ?, `has_options` = ?, `required_options` = ?, `created_at` = '2018-04-21 14:06:11', `updated_at` = '2018-06-27 09:02:18' WHERE (`entity_id`=2608) 

解决方法1:

登录mysql运行SHOW PROCESSLIST;命令得到以下信息:

ou will get the following output
+———+—————–+——————-+—————–+———+——+——-+——————+———–+—————+———–+
|      Id        |   User     |             Host             |       db       | Command | Time | State | Info | Rows_sent | Rows_examined | Rows_read |
+———+—————–+——————-+—————–+———+——+——-+——————+———–+—————+———–+
| 6794372 | db_user| 222.11.0.65:21532 | db_name| Sleep          | 3800 |          | NULL |          0       |          0                   |          0             |
| 6794475 | db_user| 222.11.0.65:27488 | db_name| Sleep         | 3757 |          | NULL |          0        |          0                   |          0             |
| 6794550 | db_user| 222.11.0.65:32670 | db_name| Sleep         | 3731 |          | NULL |          0        |          0                   |          0             |
| 6794797 | db_user| 222.11.0.65:47424 | db_name | Sleep         | 3639 |          | NULL |          0       |          0                   |          0             |
| 6794909 | db_user| 222.11.0.65:56029 | db_name| Sleep         | 3591 |          | NULL |          0       |          0                   |          0              |
| 6794981 | db_user| 222.11.0.65:59201 | db_name| Sleep         | 3567 |          | NULL |          0        |          0                   |          0             |
| 6795096 | db_user| 222.11.0.65:2390 | db_name| Sleep           | 3529 |          | NULL |          0        |          0                   |          0             |
| 6795270 | db_user| 222.11.0.65:10125 | db_name | Sleep         | 3473 |          | NULL |          0       |          0                   |          0             |

你可以看到
6794372这个命令是sleep,时间是3800.这是阻止其他操作
这些进程应该使用命令一个一个地杀死。

KILL 6794372; 
一旦你杀死了所有睡眠连接,事情应该再次正常开始

解决方法二:

通过设置innodb_lock_wait_timeout来增加InnoDB的锁定等待超时值,默认是50秒。

 运行show variables like 'innodb_lock_wait_timeout';

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50    |
+--------------------------+-------+
1 row in set (0.01 sec)
修改 innodb_lock_wait_timeout 到120秒,解决问题,具体时间自己测试定。


猜你喜欢

转载自blog.csdn.net/gejian1208/article/details/80832572