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

Ubuntu 22下Docker容器MySQL5.7连接mysql2 0.5.4 gem遇阻求助

解决mysql2 Ruby gem安装报错的可行方案

以下是针对Ubuntu 22系统、MySQL 5.7部署在Docker容器场景下,安装mysql2 gem时出现checking for rb_enc_interned_str() in ruby.h... no报错的解决方法:

1. 安装主机端必要的开发依赖

mysql2 gem编译依赖主机的Ruby开发头文件和MySQL客户端库(与Docker内的MySQL服务无关),执行以下命令安装:

  • 安装Ruby开发包:
    sudo apt-get update && sudo apt-get install ruby-dev
    
  • 安装MySQL客户端开发库:
    sudo apt-get install libmysqlclient-dev
    

2. 匹配mysql2版本与Ruby版本

Ubuntu 22默认Ruby版本为3.0.x,而mysql2 0.4.x及更早版本不支持Ruby 3.x(rb_enc_interned_str()是Ruby 2.7+引入的函数,旧版mysql2未适配),需安装兼容版本:

  • 直接安装指定版本:
    gem install mysql2 -v '0.5.5'
    
  • 若使用Bundler,在Gemfile中指定兼容版本后执行安装:
    # Gemfile中添加
    gem 'mysql2', '~> 0.5.5'
    
    bundle install
    

3. 手动指定Ruby头文件路径(可选)

若系统未自动识别Ruby头文件路径,可手动指定:

  • 查找ruby.h所在目录:
    find /usr -name ruby.h
    
    通常路径类似/usr/include/ruby-3.0.0/x86_64-linux/
  • 安装时指定include路径:
    gem install mysql2 -- --with-ruby-include=/path/to/ruby/include/dir
    

注意事项

mysql2 gem编译仅依赖主机本地的开发库,运行时通过网络连接Docker内的MySQL服务即可,无需指向容器内的文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:00:21