使用MySQL后端使用Django模拟“锁定超时”DatabaseError的最简单方法是什么?
我有一段代码,可以在大型查询集上运行,偶尔会抛出异常:
DatabaseError: (1205, 'Lock wait timeout exceeded; try restarting transaction')
我明白是什么原因以及如何修复它,但我不确定如何测试我的修复,因为错误只发生在多个用户同时访问某些表的生产环境中。
我首先尝试在一个单独的进程中运行some sample code以使Django在MySQL中应用锁定,虽然它似乎锁定了目标表并使所有其他请求等待,但是当我发生时,锁定超时永远不会发生使用runserver在我的localhost上测试。我让它在没有超时的情况下运行20分钟。
答案 0 :(得分:0)
如果你只需要特定类型的例外,为什么不在test中模拟/ monkeypatch你的代码来抛出这个exeption而不是从数据库中获取?