我在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中的错误吗?