Rails Rails 中使用 MySQL,Update 时就出错,MySQL server has gone away

zr0243 · 2018年01月18日 · 最后由 zr0243 回复于 2018年01月18日 · 1885 次阅读

错误提示如下: ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away: ROLLBACK):

app/controllers/home_controller.rb:1176:in `updateRecordByID' Rendering /usr/local/rvm/gems/ruby-2.3.3/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/ layout

应该不是 rails 的问题,看看 mysql 吧,是不是因为连接超时什么的原因 错误信息太少了,看不出来……

谢谢! 如果是连接超时,那为何新增这条记录的时候是成功的

MySQL server has gone away: ROLLBACK 主要看看你的 mysql 的问题 看看执行的 sql 是什么 自己在 mysql client 里面试一试 看看什么原因这个 sql 执行失败。

这一条记录有个特殊的地方,有个字段的内容很大,在新增时成功插入数据库,修改时,就无法修改了,提示上面的错误,修改一条记录比新增一条新记录更耗时吗

my.cnf 中的设置: interactive_timeout=28800 wait_timeout=28800

贴一下代码上下文上来吧

我把代码与数据移到一台实际安装 64 位 Ubuntu 服务器上就能成功运行并修改记录成功,可是在虚拟机上 32 位 Ubuntu 上就无法修改记录

t = Titt.find(params[:id].to_i) t.comment=params[:comment] t.save

"有个字段的内容很大,在新增时成功插入数据库,修改时,就无法修改了,提示上面的错误,修改一条记录比新增一条新记录更耗时吗" 这取决于你更新了多少字段 有没有更新的字段 有索引 等等因素。

好的,谢谢兄弟们!反正在 64 位的 mysql 中能运行就不管它了,我怀疑是由于 32 位的 mysql 引起的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号