【问题标题】:How to simulate a "lock timeout" error with Django on MySQL如何在 MySQL 上使用 Django 模拟“锁定超时”错误
【发布时间】:2015-07-16 18:15:21
【问题描述】:

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

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

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

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

我首先尝试在单独的进程中运行 some sample code 以使 Django 在 MySQL 中应用锁,虽然它似乎确实锁定了目标表并使所有其他请求等待,但当我测试时从未发生锁定超时我的本地主机与 runserver。我让它运行了 20 分钟,没有发生超时。

【问题讨论】:

    标签: python mysql django django-orm database-locking


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      • 2011-04-16
      • 2015-09-20
      • 2015-07-18
      相关资源
      最近更新 更多