https://dev.mysql.com/doc/refman/8.0/en/innodb-deadlock-detection.html个
如果Innodb_TABLE_LOCKS=1(缺省值),InnoDB就知道表锁 并且自动提交=0,并且它上面的MySQL层知道行级 锁上了.否则,InnoDB无法检测到a table lock set by a MySQL LOCK TABLES statement的死锁或存储引擎设置的锁 除InnoDB外,还参与了这笔交易.解决这些情况的方法是将 INNODB_LOCK_WAIT_TIMEOUT系统变量的值.
根据文档,我知道使用Innodb表和使用锁表如下will detect deadlocks:
SET autocommit=0;
LOCK TABLES t1 WRITE, t2 READ, ...;
... do something with tables t1 and t2 here ...
COMMIT;
UNLOCK TABLES;
这是正确的,还是我误解了?请纠正我