保存/更新模型时,Django“超过锁定等待超时;尝试重新启动事务”

Posted

技术标签:

【中文标题】保存/更新模型时,Django“超过锁定等待超时;尝试重新启动事务”【英文标题】:Django "Lock wait timeout exceeded; try restarting transaction" while saving/updating a model 【发布时间】:2018-01-31 07:46:41 【问题描述】:

我对 Django 还是有点陌生​​,当我尝试通过管理界面更新我的模型时,我得到了(1205,'锁定等待超时;尝试重新启动事务')。今天早些时候,它正在工作,我一直在回滚对上一个工作版本的更改,以试图缩小似乎是问题的范围。

问题似乎是无法更新和超时。只需通过管理界面编辑并点击保存即可触发此问题。我已经禁用了我设置的任何信号处理(post/presave),但我认为只是在点击保存更改后的 UPDATE 调用会触发这个问题。

我已经对其进行了调查,并且可以在点击此链接后终止该进程: Getting "Lock wait timeout exceeded; try restarting transaction" even though I'm not using a transaction

但这并不能解决问题。我可以在进程运行时终止它,但它是唯一正在运行的查询,甚至不是一个大查询。

该模型只有 7 个字段,用于描述我正在编目的 *** 服务器。一个显示进程列表给了我这个:

更新 |更新open***_client 设置name = 'rsa_test1', local_ip = '2.2.2.2', ***_ip = NULL, type =

桌子的末端被切断了,但我假设它还有其余部分。

我认为这是一个大小问题,但到目前为止,我的表中只有 4 个“客户”条目,它们都没有存储任何类型的大数据。

到目前为止,我认为这是一个 mysql 问题,而不是 Django 问题,并且有一半的心思重新开始一个新的数据库。

我不打算增加超时值,因为它过去常常在不到一秒的时间内运行来更新这些字段,所以不太确定从那时起发生了什么变化。

【问题讨论】:

【参考方案1】:

事实证明,post_save 信号有阻塞的错误代码(不完整的 Celery 任务)。感觉是在完成之后才收到信号,但似乎不是这样。

【讨论】:

已经坚持了将近2天了!尽管我已经注释掉了所有“延迟”任务,但还是错过了 1 个模型,这造成了严重破坏。谢谢?

以上是关于保存/更新模型时,Django“超过锁定等待超时;尝试重新启动事务”的主要内容,如果未能解决你的问题,请参考以下文章

超过锁定等待超时;尝试重新启动事务 MYSQL Python

收到警告:SQL 错误:1205,SQLState:41000 错误:超过锁定等待超时;尝试重新启动事务。使用休眠保存记录

调用某些查询时,MySQL“超过锁定等待超时”

超过锁定等待超时;从表中删除数据时尝试重新启动事务

Laravel - DatabaseTransactions - 超过锁定等待超时

无法完成交易;超过锁定等待超时;尝试重启事务