1205: Lock wait timeout exceeded; try restarting transaction(超出锁等待超时;请尝试重新开始事务)
MySQL含义
事务等待所需的行锁达 innodb_lock_wait_timeout 秒仍未获取,已超时。
原因
另一事务长时间持有锁而未提交或回滚;空闲的未结束事务、长时间运行的批量更新,或争用激烈的热点行。
解决方法
找出阻塞事务:关联 performance_schema.data_lock_waits 与 data_locks(旧版本中为 information_schema.innodb_lock_waits/innodb_trx)。提交/回滚阻塞事务,必要时用 KILL <trx_mysql_thread_id> 终止它。保持事务简短,不要让事务处于空闲状态(autocommit/应用逻辑)。必要时根据工作负载调整 innodb_lock_wait_timeout。
同一数据库的其他条目
- 1045Access denied for user (using password: YES/NO)(用户访问被拒绝(使用密码:YES/NO))
- 1062Duplicate entry for key(键的重复条目)
- 1213Deadlock found when trying to get lock; try restarting transaction(尝试获取锁时发现死锁;请尝试重新开始事务)
- 1040Too many connections(连接过多)
- 1064You have an error in your SQL syntax(SQL 语法错误)
- 1146Table doesn't exist(表不存在)
- 1054Unknown column in field list(字段列表中存在未知列)