› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
vemier
V2EX  ›  MySQL

为什么跑集成测试时会出现 mysql 死锁

  •  
  •   vemier · Aug 6, 2020 · 3429 views
    This topic created in 2280 days ago, the information mentioned may be changed or developed.
    有一个加了事务的方法,先是 deleteById,然后再 insertById,这两个方法的 id 是同一个 id

    通过接口调用没有问题,用 maven 跑集成测试就死锁了,通过 SELECT * FROM sys.innodb_lock_waits 可以看到 insertById 被 deleteById block 住了,去掉事务的话集成测试就可以跑过去,为啥会这样...
    5 replies  •  2020-08-07 17:44:34 +08:00
    AngryPanda
    AngryPanda
    Aug 7, 2020 via Android
    1
    insertById 是什么鬼?先有 id 再 insert ?
    wakzz
    wakzz
    Aug 7, 2020
    2
    mysql 的行锁,一个事务写一条记录未提交,该记录锁住,所以另一个事务无法写该记录。
    vemier
    vemier
    OP
    Aug 7, 2020
    3
    @AngryPanda 写错了,是 insert(aId,bId)
    vemier
    vemier
    OP
    Aug 7, 2020
    4
    failsafe 插件配置<reuseForks>false</reuseForks><forkCount>1</forkCount>就可以了
    vemier
    vemier
    OP
    Aug 7, 2020
    5
    @wakzz 这些方法都在一个事务里的。不清楚 failsafe 的这个 fork 机制做了什么东西。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4963 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 01:37 · PVG 09:37 · LAX 17:37 · JFK 20:37
    ♥ Do have faith in what you're doing.