【发布时间】:2014-03-13 20:03:42
【问题描述】:
我不断看到使用 innodb 表的部分提交事务:
- 我所有的表都使用 innodb 作为后端
- mysql版本:5.5.31-0ubuntu0.13.04.1-log
- 基于uwsgi的python web应用,每个http请求都封装在一个单独的事务中,根据请求过程中是否产生异常,要么提交要么回滚
- 每个请求服务进程使用一个不跨进程共享的 mysql 连接
- 其他几个进程连接到数据库以执行全部包含在事务中的后台任务
- 事务都是通过 sqlalchemy 中间件创建和跟踪的,该中间件配置为不更改默认的 mysql 隔离级别,即 REPEATABLE READ
尽管如此(我对每个项目都检查了三次),但我的数据库似乎包含一半提交的事务: 1. 2 个表 A 和 B,其中 A 包含 B 的外键(数据库中没有定义约束) 2. A 包含指向 B 中不存在的行的有效行。 3. B 包含 id + 1 和 id - 1 的行。 4. 两个表中的两行都插入到一个事务中
总而言之,我看不出我可能做错了什么。我无法想象我在 mysql 存储后端中遇到了一个错误,所以我正在寻求帮助,了解如何进一步调试以及我上面所做的假设最有可能是错误的。
【问题讨论】:
标签: python mysql sqlalchemy