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

Ruby on Rails操作MySQL触发mysql2 gem段错误,求解决方案

环境信息
  • Ruby版本:3.0.4p208
  • Rails版本:7.0.4
  • 环境管理:rvm
  • 操作系统:Ubuntu 22.04.1 LTS
  • MySQL版本:Ver 8.0.31-0ubuntu0.22.04.1 for Linux on x86_64
问题现象

执行MySQL数据库创建、初始化等操作时触发段错误(Segmentation fault),程序终止并输出Aborted (core dumped)。

错误日志片段
Top level ::CompositeIO is deprecated, require 'multipart/post' and use `Multipart::Post::CompositeReadIO` instead!
Top level ::Parts is deprecated, require 'multipart/post' and use `Multipart::Post::Parts` instead!
W, [2023-01-12T12:59:10.830314 #125121]  WARN -- Skylight: [SKYLIGHT] [5.3.4] Running Skylight in development mode. No data will be reported until you deploy your app.
(To disable this message for all local apps, run `skylight disable_dev_warning`.)
/External-drive/Personal/Projects/breakabletoy/vendor/bundle/ruby/3.0.0/gems/mysql2-0.5.4/lib/mysql2/client.rb:95: [BUG] Segmentation fault at 0x0000000000000000
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0049 p:---- s:0274 e:000273 CFUNC  :connect
c:0048 p:0623 s:0262 e:000261 METHOD /External-drive/Personal/Projects/breakabletoy/vendor/bundle/ruby/3.0.0/gems/mysql2-0.5.4/lib/mysql2/client.rb:95 [FINISH]

错误末尾内存映射信息:

7f91e72b2000-7f91e72dc000 r-xp 00002000 103:02 31066233                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f91e72dc000-7f91e72e7000 r--p 0002c000 103:02 31066233                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f91e72e7000-7f91e72e8000 r-xp 00000000 00:00 0 
7f91e72e8000-7f91e72ea000 r--p 00037000 103:02 31066233                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f91e72ea000-7f91e72ec000 rw-p 00039000 103:02 31066233                  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7ffedcfb9000-7ffedd7b8000 rw-p 00000000 00:00 0                          [stack]
7ffedd7bc000-7ffedd7c0000 r--p 00000000 00:00 0                          [vvar]
7ffedd7c0000-7ffedd7c2000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]


Aborted (core dumped)
已尝试的操作
  • 尝试安装libmariadbclient-dev,但系统提示找不到该包
  • 安装mysql2官方文档要求的所有依赖
  • 卸载并重装rvm
解决方案

1. 安装正确的MySQL开发依赖

Ubuntu 22.04中libmariadbclient-dev已被替换,执行以下命令安装适配的依赖:

sudo apt update
sudo apt install libmysqlclient-dev

2. 重新编译mysql2 gem

卸载现有版本后,指定系统MySQL配置路径重新编译安装:

gem uninstall mysql2
bundle config build.mysql2 --with-mysql-config=/usr/bin/mysql_config
bundle install

3. 升级mysql2 gem版本

mysql2 0.5.4与Ruby 3.0.x存在兼容性问题,升级至最新稳定版:

# 修改Gemfile中的mysql2版本约束,例如:
# gem 'mysql2', '~> 0.5.5'
bundle update mysql2

4. 重置rvm gemset

清理当前gemset的冲突依赖:

rvm gemset empty
bundle install

5. 验证连接有效性

创建测试脚本确认MySQL连接正常:

# test_mysql.rb
require 'mysql2'

client = Mysql2::Client.new(
  host: 'localhost',
  username: 'your_db_user',
  password: 'your_db_password',
  database: 'your_db_name'
)

puts "Connection successful!"
client.close

运行脚本:

ruby test_mysql.rb

内容的提问来源于stack exchange,提问作者broiling-clamshell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:15:36