Django / MySQL:由于完整性检查,插入失败时数据库行被锁定

时间:2011-07-26 14:19:49

标签: mysql django django-orm

我在Django 1.3和MySQL中遇到了一个奇怪的行为。我有一个带有字段object_id的模型,它充当主键(而不是自动增量)。我正在使用以下代码添加一个对象:

Record.objects.create(object_id = '1')

这很好用。如果我再次尝试添加相同的对象(从shell执行),我将获得IntegrityError: (1062, "Duplicate entry '1' for key 'PRIMARY'")。那没关系。

但是,现在有一个副作用:如果我尝试从不同的线程/进程中删除相同的记录,即使只是尝试使用MySQL shell删除它,我也会收到一个事务错误({{1} })。我应该指出,如果我只创建一次对象(没有完整性错误),则不会发生此问题。此外,它从同一个线程删除时工作正常(可能是因为它使用相同的连接)。

如果我使用Lock wait timeout exceeded; try restarting transaction,情况可以暂时解决,但这似乎不对。我尝试使用手动事务管理和回滚,但这没有任何好处。

关于出了什么问题的任何想法?这是Django ORM中的错误吗?

0 个答案:

没有答案