MySQLでデッドロック

クエリの実行順番変えれば解決するそうですが、自分は知らないとハマるだろうなと思い、どういう動きかだけ試させていただきました。

試すテーブル

CREATE TABLE `tests3` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `c1` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

INSERT INTO tests3 VALUES(null,'111'),(null,'222');

手順
①START TRANSACTION

②START TRANSACTION

①update tests3 set c1 = 'aaa' where id =1

②update tests3 set c1 = 'bbb' where id =2

①update tests3 set c1 = 'ccc' where id =2

f:id:okumuraa1:20171214230222g:plain

デッドロックしました またひとつ勉強になりました、これでいざという時にはまらんですむぞ