执行数据库更新update操作的时候数据库卡死了

问题分析

一般都是数据库事务未提交,导致update或者delete卡死。

解决办法

  1. 在执行完更新或删除后,记得将事务提交commit;
  2. 找到数据库客户端,执行commit操作。

如果还不行。 那么应该是数据库在执行数据操作失败 or 事务未提交 之后,将需要执行的sql语句锁死了。

过程复现和解决

通过如下命令查看数据库的自动提交状态

show variables like 'autocommit';

通过SQL设置数据库自动自动提交为关闭

-- on为开启,off为关闭
set autocommit=off;
-- 或者1为开启,0为关闭
set autocommit=0;

表中数据如下:

打开两个窗口分别执行update操作

update car set color ='银色' where id = 1;
update car set color ='红色' where id = 1;

查询正在执行的事务:

SELECT * FROM information_schema.INNODB_TRX;


根据图中事务的线程ID(trx_mysql_thread_id)可以看出对应的mysql 线程:一个1084 (update正在等待锁)另一个是1089(update 正在执行 没有提交事务)

可以使用mysql命令杀掉线程:kill 线程id

kill 1089;

期间如果并未杀掉持有锁的线程:则第二个update语句会提示等待锁超时。

相关命令:

-- 查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
-- 查询mysql数据库中存在的进程
select * from information_schema.`PROCESSLIST`(show processlist;)

扩展

oracle的操作方式:

  1. 查询锁定记录
SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;
  1. 删除锁定记录
ALTER system KILL session 'SID,serial#';

呜啦啦啦啦 看官喜欢的话点赞收藏或者关注一下吧

MySQL数据库执行Update卡死问题解决相关推荐

  1. 关于Access数据库执行Update语句后,不报错,但影响行数总是返回0的问题

    最近碰到一个奇怪的问题,使用Access数据库执行Update语句后,不报错,但影响行数总是返回0. 因为是第一次碰到这个问题,纠结了半天.后来在网上搜索得到解决方案: SQL语句传参数的顺序和语句中 ...

  2. DBeaver连接mysql数据库执行.sql脚本,Windows

    DBeaver连接mysql数据库执行.sql脚本,Windows操作系统 (1)首先需要DBeaver连接mysql成功. 启动mysql, mysqld --console 打开DBeaver连接 ...

  3. Python连接MySQL数据库执行sql语句时的参数问题

    由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入 ...

  4. wamserver怎么把mysql找回来_将php连接wampserver自带的MySQL数据库 所遇到各种问题解决办法...

    将php连接到MySQL数据库的方法有很多,在这里我使用的是mysqli_connect方法, 此博客所解答的问题汇总: 1.wampserver服务器离线但图标为正常绿: 2.wampserver ...

  5. 8万行的insert数据,Ctrl+c、Ctrl+v后心态崩了(如何在Linux下对MySQL数据库执行sql文件)...

    从最下面可以看到,差不多有86389行,Ctrl+c.Ctrl+v后 PHPstorm一直没有反应.... 肿么办??复制粘贴不行的话,可以用什么方法把数据插入到数据库中,数据库用的是MySQL. 皇 ...

  6. 为什么只能sudo进mysql_解决项目中MySQL数据库执行删除语句时间太长的问题

    问题描述: 由于业务需求,需要删除一些重复数据.即删除openid对应的2条数据,最终只保留一行. MySQL数据库,sql语句比较简单:删除数据前,备份数据是必须的! 先来错误的演示: 1.先把错误 ...

  7. mysql虚拟机授权错误,windows下用navicat链接虚拟机MySQL数据库的过程和问题解决

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 navicat远程连接到虚拟机中的MySQL数据库 1.在Linux上检查mysql服务器的IP地址 \ ifcon ...

  8. mysql delete语句非常耗时_解决项目中MySQL数据库执行删除语句时间太长的问题

    问题描述: 由于业务需求,需要删除一些重复数据.即删除openid对应的2条数据,最终只保留一行. MySQL数据库,sql语句比较简单:删除数据前,备份数据是必须的! 先来错误的演示: 1.先把错误 ...

  9. python调用mysql数据库sql语句过长有问题吗_Python 连接Mysql数据库执行sql语句

    #-*- coding: utf-8 -*- ''' ====================================================================== 描述 ...

  10. asp 更新 mysql数据库_asp update mysql数据库

    数据库必知词汇:数据操纵语言DML |名词定义|数据操纵语言(Data Manipulation Language, DML)是SQL语言的四大主要分类之一,用户通过它可以实现对数据库数据的基本操作. ...

最新文章

  1. C#中汉字数字、汉字拼音的转换
  2. Spring框架分为哪七大模块以及各模块的主要功能作用
  3. SpringMVC拦截器HandlerInterceptor原理及使用
  4. 如何在React中做到jQuery-free
  5. Cygwin使用指南
  6. ios开发 热搜词demo_手机app如何开发
  7. 163网站顶部展出的大幅广告
  8. 山大计算机学院教务处,山东大学本科生院教务系统
  9. swift unowned和weak的使用
  10. Android BKS 格式证书制作,JKS 制作 BKS,解决 java.security.KeyStoreException: JKS not found 问题
  11. iOS打包错误The operation couldn’t be completed. (AppThinning.StubError error 1.)
  12. 一名大二废柴今后目标
  13. 计算机管理上移动硬盘显示其他设备,win7系统拔出移动硬盘提示“该设备正在使用”怎么处理...
  14. Java模拟实现ATM系统
  15. mysql数据库表锁、行锁
  16. C++词法记号规则之标识符 关键字 操作符 分隔符 空白符
  17. 基于B/S的城市公交查询系统的设计与实现(附:源码+论文+答辩PPT))
  18. 通过view实现实时监测数据的实时更新展示
  19. 安卓版微信url重定向跳转
  20. webpack和webpack-cli的关系

热门文章

  1. Hadoop(一) Centos7 下Hdoop 安装及伪分布式集群部署
  2. 安装Hadoop2.10.1
  3. 学而时娱之,不亦乐乎
  4. android设置背景图片透明
  5. Matlab中_pkg.exe,pkg是什么文件?pkg文件怎么安装?
  6. 三维激光扫描在堆体体积测算中的应用
  7. oracle查询怎样更效率,Oracle提高查询效率的方法
  8. 【python】urlencode、quote、unquote
  9. 计算机专业找工作面试面经总结
  10. python中pip作用_python中的pip有什么作用