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

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

错误提示如下: 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

共收到 10 条回复

应该不是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引起的

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