保存/更新模型时,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 错误:超过锁定等待超时;尝试重新启动事务。使用休眠保存记录