一、错误发生及原因猜测

1、错误发生

在删除 t_user 表的一条数据时,Navicat 发生长时间的无响应,然后弹出一个对话框,提示:ERROR 1205: Lock wait timeout exceeded; try restarting transaction

关闭对话框之后,数据并没有被删除。

2、原因猜测

根据错误信息可以知道,是因为锁等待超时导致的错误。那么具体到底是什么原因。

我们知道,InnoDB 引擎是支持事务的。

在使用 begin 或 start transaction 开启事务,进行更新、删除时,会对被操作的行加行级锁。

如果这个事务没有提交,而其他的事务对同一行也进行了更新、删除操作,那么这个事务是不能成功的,至于会不会出现上面的错误,还不确定。

二、错误重现

1、演示环境

操作系统

Windows 7 x64

MySQL版本

MySQL Community Server (GPL) 5.5.56

执行未提交事务的用户

system

查看会话、执行删除操作的用户

root

数据库

test

t_user

1 mysql> select * fromt_user;2 +----+----------+

3 | id | username |

4 +----+----------+

5 | 1 | a1 |

6 | 2 | a2 |

7 | 3 | a3 |

8 | 4 | a4 |

9 | 5 | a5 |

10 | 6 | a6 |

11 +----+----------+

2、错误重现

使用 A窗口更新 id = 2 的数据

1 mysql> begin;2 Query OK, 0 rows affected (0.00sec)3

4 mysql> update t_user set username = 'b1' where id = 2;5 Query OK, 1 row affected (0.00sec)6 Rows matched: 1 Changed: 1 Warnings: 0

在没有提交的情况下,使用 C窗口查看当前事务,我们可以看到事务的 状态(trx_state)、行锁数(trx_rows_locked)、修改数据行数(trx_rows_modified)等信息

1 mysql> select * frominnodb_trx\G;2 *************************** 1. row ***************************

3 trx_id: A0234 trx_state: RUNNING5 trx_started: 2018-03-11 15:30:19

6 trx_requested_lock_id: NULL

7 trx_wait_started: NULL

8 trx_weight: 3

9 trx_mysql_thread_id: 5

10 trx_query: NULL

11 trx_operation_state: NULL

12 trx_tables_in_use: 0

13 trx_tables_locked: 0

14 trx_lock_structs: 2

15 trx_lock_memory_bytes: 376

16 trx_rows_locked: 1

17 trx_rows_modified: 1

18 trx_concurrency_tickets: 0

19 trx_isolation_level: REPEATABLE READ

20 trx_unique_checks: 1

21 trx_foreign_key_checks: 1

22 trx_last_foreign_key_error: NULL

23 trx_adaptive_hash_latched: 0

24 trx_adaptive_hash_timeout: 10000

此时再使用 B窗口删除t_user表的数据,在删除 id = 2 的数据时,发现事务被阻塞。我们在 C窗口查看 processlist、事务以及锁等待情况

1 mysql> show full processlist;

1 mysql> select * from innodb_trx\G;

1 mysql> select * from INNODB_LOCK_WAITS\G;

当事务超时后出现1205的错误

此时,我们再查看一下 processlist、事务以及锁等待情况,发现刚才处于 等待状态的事务、process和锁等待已经没有了

1 mysql> show fullprocesslist;2 mysql> select * fromINNODB_LOCK_WAITS\G;3 mysql> select * from innodb_trx\G;

此时把 A窗口rollback回来

mysql> rollback;

再查看一下processlist、事务以及锁等待情况

由此可以确定:1205 的错误是因为未提交事务对数据加了行级锁,当前事务获取同一数据行级锁超时导致的

三、解决方案

我们可以使用 show full processlist 查看未提交事务的连接的 id

可以看到这个连接的id是5

如果可以确定不是很重要的事务,我们可以使用kill命令断开这个连接。

mysql> kill 5;

如果不确定的话,还是需要沟通一下如何安全处理。

mysql error1205 博客_MySQL的ERROR 1205错误分析相关推荐

  1. mysql逻辑结构博客_mysql梳理2

    mysql逻辑架构 最上层不是Mysql独有的, 比如连接处理,授权认证, 安全 等等 第二层核心服务功能,包括查询解析,分析,优化,缓存以及所有内置函数,存储过程,触发器,视图等都在这层实现 第三层 ...

  2. mysql 学习 博客_mysql学习

    一张常用的图说明一下mysql,并且里面的顺序不能变或者错 mysql命令行登录 mysql -uroot -p root 当然学习阶段我一般使用phpStudy方便快捷,后面又发现了DBeaver更 ...

  3. mysql简介博客_mysql简介

    随着 MySQL 被 Oracle 收购,MySQL 的用户和开发者开始质疑开源数据库的命运,与此同时他们开始寻找替代品. 有文章写到了放弃 MySQL 的五大理由: MySQL 不如其它关系型数据库 ...

  4. mysql数据库 博客_mysql数据库教程--第 页-杨雨个人博客-关注互联网和搜索引擎的技术博客...

    发布时间:19-07-02 作者:杨雨 分类:mysql教程 Mysql主从基本原理,主要形式以及主从同步延迟原理 (读写分离)导致主库从库数据不一致问题的及解决方案.从数据库(Slave)是主数据库 ...

  5. mysql使用博客_mysql使用

    查看当前实例下有多少个数据库 show databases; 查看表 show tables: 创建数据库 create database jili; 使用数据库 use jili; 删除数据库 dr ...

  6. PHP+MySQL实现博客管理系统

    DataBase 数据库课程设计 实验目标 PHP+MySQL实现博客管理系统 使用语言 后台-php 前端-html css js 相关知识可以在菜鸟教程学习,链接如下菜鸟教程 实验步骤 一. 环境 ...

  7. node+koa2+mysql搭建博客后台

    本文将详细讲解使用node+koa2+mysql搭建博客后台的全过程. 开发环境 node 8.3.0及以上 npm 5.3.0及以上 mysql 5.7.21 具体的环境配置可查看我的上一篇文章 准 ...

  8. node mysql和koa_node+koa2+mysql搭建博客后台

    本文将详细讲解使用node+koa2+mysql搭建博客后台的全过程. 开发环境 node 8.3.0及以上 npm 5.3.0及以上 mysql 5.7.21 具体的环境配置可查看我的上一篇文章 准 ...

  9. php mysql博客源码下载_PHP+MySQL实现博客系统

    [实例简介] PHP+MySQL实现博客系统,只实现了基础功能.(前端或者其他功能,可以自己扩展) [实例截图] [核心代码] a9c31135-59a3-4f53-a8a9-145c13812532 ...

  10. 成为MySQL DBA 博客系列-数据库升级

    数据库供应商通常每个月都会发布一些有bug /安全性修补程序的补丁,我们为什么要关心?新的版本可能对关于安全漏洞和黑客入侵系统的修复,所以除非安全性不被关注,否则您可能希望在您的系统上安装最新的安全修 ...

最新文章

  1. Win7中如何删除word模板
  2. 是同步方法还是 synchronized 代码?-- 详解多线程同步规则
  3. 【机器学习基础】前置知识(二):30分钟掌握常用Jupyter Notebook用法
  4. python解码base64_在python中解码Base64 Gzip
  5. win10卸载电脑管家就蓝屏_win10 动不动就蓝屏,都不敢用啦。该怎么解决呢?
  6. MachineLearning(7)-决策树基础+sklearn.DecisionTreeClassifier简单实践
  7. 编程入门指南 v1.4
  8. trie树的数据结构_C / C ++中的Trie数据结构
  9. leetcode 148. Sort List ----- java
  10. 为什么root下不能使用passwd命令_Linux:CentOS 7中常用的基础命令
  11. 学习笔记 | 非负矩阵分解(NMF)浅析
  12. 快速理解色彩搭配的三个配色知识
  13. ffmpeg连接rtsp流提示Connection refused
  14. 安智市场发展史:刷机产业链的”中间商”
  15. 数据库事务Transaction)那点事
  16. 如何预估项目的完成时间
  17. 微信小程序按钮添加背景
  18. 输入一个字符,将大写字母换小写,小写变大写
  19. 行情平淡期做市商如何刷量 说一个网格策略魔改高频刷单策略的思路
  20. socket.io实现聊天功能——第一章 、群聊

热门文章

  1. Fresco 使用要点(不定期更新)
  2. 【历史上的今天】12 月 12 日:英特尔创始人出生;PSP 发布;双十二购物狂欢节
  3. 计算机三级数据库考试知识点及题库总结(最全)
  4. VS 可扩展性开发(九):总结篇
  5. TAPD关联Jenkins
  6. spark推测机制及参数设置
  7. 开课吧 dubbo+zookeeper
  8. python爬斗鱼直播房间名和主播名,Python爬虫获取斗鱼主播信息
  9. [操作系统] elementary os系统美化插件
  10. 如何在不清空原有配置的情况下修改路由器密码??????