LC1990313 2021-08-01 13:50 采纳率: 0%
浏览 11

关于msql中myisam和innodb锁的疑问

myisam引擎执行的sql:

lock table test_myisam read;

select * from test_myisam where id = 1;

update test_myisam set name ='11' where id =1;

执行update 报错

innodb引擎执行的sql:

set autocommit = false;

select * from student where id = 1 lock in share mode;

select * from student where id = 1 for update;

update student set name ='11' where id =1 ;

上面所有语句都可以正常执行

我的疑问是,同一个session中myisam加上共享锁后执行update,因为有共享锁了所以无法加排它锁报错,那为什么在innodb中我加了共享锁,再加排它锁却不报错呢

  • 写回答

1条回答 默认 最新

  • 咕泡-灰灰老师 2021-08-02 15:59
    关注

    首先,锁是根据索引树来的,如果ID是主键,加了共享锁后,排它锁肯定是阻塞不能更改的!确认下版本以及student表的引擎

    评论

报告相同问题?

问题事件

  • 创建了问题 8月1日

悬赏问题

  • ¥20 matlab写的上位机UDP速率不到1M
  • ¥100 tomcat应用从Termux上连接不到Linux上的MySQL服务器(相关搜索:服务器)
  • ¥15 flutter 错误RROR:flutter/runtime/dart_vm_initializer.cc(41)
  • ¥15 python和aspen Adsportion交互
  • ¥20 dat文件如何识别真假(语言-python)
  • ¥20 打开谷歌浏览器使用摄像头进行人脸认证登录,系统提示检测到多个摄像头设备疑似攻击,请重新验证。
  • ¥50 服务器被挂外链急需解决
  • ¥15 C语言方阵最基本的氩气放电等离子体鞘层
  • ¥15 QWebEngineView
  • ¥15 docker启动报错,如何解决?(操作系统-linux)