You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails执行rails c时mysql2出现Segmentation fault问题求助

环境信息
  • Ruby版本:2.5.8p224 (2020-03-31 revision 67882) [x86_64-linux]
  • Rails版本:5.0.7.2
  • 触发场景:执行rails c时触发Segmentation Fault(段错误),错误根源指向mysql2 gem的数据库连接环节

错误日志

home/user/.rvm/gems/ruby-2.5.8/gems/mysql2-0.5.3/lib/mysql2/client.rb:90: [BUG] Segmentation fault at 0x0000000000000000
ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0044 p:---- s:0331 e:000330 CFUNC  :connect
c:0043 p:0614 s:0319 e:000318 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/mysql2-0.5.3/lib/mysql2/client.rb:90 [FINISH]
c:0042 p:---- s:0305 e:000304 CFUNC  :new
c:0041 p:0142 s:0300 e:000299 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/mysql2_adapter.rb:25
c:0040 p:0024 s:0293 e:000292 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:729
c:0039 p:0021 s:0289 e:000288 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:773
c:0038 p:0016 s:0285 e:000284 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:752
c:0037 p:0014 s:0279 e:000278 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:713
c:0036 p:0012 s:0273 e:000271 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:490
c:0035 p:0031 s:0267 e:000263 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:364
c:0034 p:0046 s:0260 e:000259 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:883
c:0033 p:0011 s:0253 e:000252 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_handling.rb:128
c:0032 p:0004 s:0249 e:000248 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/connection_handling.rb:91
c:0031 p:0012 s:0245 e:000244 METHOD /home/user/.rvm/gems/ruby-2.5.8/gems/activerecord-5.0.7.2/lib/active_record/migration.rb:559

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted (core dumped)
解决思路
  • 重新编译mysql2 gem:段错误多因C扩展编译不兼容导致,卸载后重新安装并指定系统mysql配置路径:

    gem uninstall mysql2
    gem install mysql2 -v 0.5.3 -- --with-mysql-config=$(which mysql_config)
    
  • 调整mysql2版本:尝试切换mysql2的兼容版本,比如降级到0.5.2或升级到0.5.4,修改Gemfile后执行:

    bundle update mysql2
    
  • 验证系统MySQL库兼容性:检查系统安装的MySQL/MariaDB版本与mysql2 gem是否匹配,若版本差异过大,升级或降级系统MySQL库。

  • 重置RVM环境:RVM管理的Ruby可能存在环境冲突,重新加载或重装Ruby:

    rvm reload
    rvm use 2.5.8 --default
    # 若无效则重装Ruby
    rvm uninstall 2.5.8
    rvm install 2.5.8
    
  • 排查数据库连接配置:启动不连接数据库的控制台,确认是否为配置问题:

    rails c --skip-active-record
    

    若能正常启动,检查config/database.yml中的主机、端口、账号密码是否正确,并用mysql命令行测试连接:

    mysql -h [数据库主机] -u [用户名] -p [数据库名]
    
  • 分析Core Dump文件:若系统生成core dump,用gdb定位具体错误点:

    gdb ruby core
    bt # 查看调用栈详情
    

内容的提问来源于stack exchange,提问作者NehaNH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:40:24