0

使用 MySQL 后端使用 Django 模拟“锁定超时”DatabaseError 的最简单方法是什么?

我有一段代码,它在大型查询集上运行,偶尔会抛出异常:

 DatabaseError: (1205, 'Lock wait timeout exceeded; try restarting transaction')

我了解导致此问题的原因以及如何修复它,但我不确定如何测试我的修复,因为该错误仅发生在多个用户同时访问某些表的生产环境中。

我首先尝试在单独的进程中运行一些示例代码以使 Django 在 MySQL 中应用锁,虽然它似乎确实锁定了目标表并使所有其他请求等待,但当我在我的 localhost 上测试时从未发生锁定超时运行服务器。我让它运行了 20 分钟而没有发生超时。

4

1 回答 1

0

如果您只需要具有特定类型的异常,为什么不在测试中模拟/猴子补丁您的代码以抛出此异常而不是从数据库中获取?

于 2015-05-06T14:50:01.093 回答