我正在尝试使用 GoLang 的 GORM 从数据库中读取数据,并且总体上对 Go 很陌生。这是我正在尝试工作的片段。它是使用数字搜索数据库并检查它是否已存在。只是在这里抓住救命稻草,并没有真正理解 GORM 是如何工作的,也找不到解释执行Where子句后要做什么的文档。
res := db.Where("Number = ?", inumber).First(&Profile{})
log.Print("Searched for profile")
if res.RecordNotFound() {
log.Print("Record not found")
return "", "", "", false
} else {
log.Print("RES")
log.Print(res.Rows())
ret := res.Scan(&Profile{})
return
}
return
Run Code Online (Sandbox Code Playgroud) 我对 Django 还是有点陌生,当我尝试通过管理界面更新我的模型时,我得到了 (1205, 'Lock wait timeout exceeded; try restarting transaction')。今天早些时候,它正在工作,我一直在回滚对上一个工作版本的更改,以尝试缩小似乎存在的问题的范围。
问题似乎是它无法更新和超时。只是通过管理界面编辑和点击保存会触发这个问题。我已经禁用了我设置的任何信号处理(后/预保存),但我认为只有点击保存更改后的 UPDATE 调用才会触发这个问题。
我已经研究过它并且可以在点击此链接后终止该进程:即使我没有使用事务,也可以 获取“超出锁定等待超时;尝试重新启动事务”
但这并不能解决问题。我可以在进程运行时终止它,但它是唯一正在运行的查询,甚至不是一个很大的查询。
该模型只有 7 个字段,用于描述我正在编目的 VPN 服务器。显示进程列表给了我这个:
更新 | UPDATE
openvpn_clientSETname= 'rsa_test1',local_ip= '2.2.2.2',vpn_ip= NULL,type=
结束在表中被切断,但我假设它在那里有其余部分。
我认为这是一个大小问题,但到目前为止,我的表中只有 4 个条目用于“客户”,并且它们都没有存储任何类型的大数据。
到目前为止,我认为这是一个 mySQL 问题,而不是一个 Django 问题,并且有一半的想法重新开始一个新的数据库。
我不打算增加超时值,因为它过去常常在不到一秒的时间内运行来更新这些字段,所以不太确定从那时起发生了什么变化。