Transaction 与 autocommit
有些 ORM 框架(比如 sequelize 这个坑),在 start transaction
后提供 set autocommit = 0
的操作。 但是事务结束后 ORM 并没有恢复 autocommit,那么在同一个 mysql 线程上,由于后续 SQL 请求没有主动 commit,导致各种问题。
两个知识点:
- mysql 的一个线程对应一个 Session
- autocommit 的 scope 是 Global 或 Session 级别的,详见官方文档