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

Ubuntu 20.04安装mysql2 0.3.21 gem时构建原生扩展失败如何解决?

报错根因

本次编译失败是因为 mysql2 0.3.21 属于较早版本,不兼容 Ubuntu 20.04 系统默认预装的 MySQL 8.0 客户端开发库:MySQL 8.0 正式移除了旧版本定义的 my_bool 类型和 MYSQL_SECURE_AUTH 宏,和你部署的 MySQL 5.7 服务端版本无关。

解决方案

方案1:编译时传入适配参数(优先推荐,无需修改系统依赖)

直接在安装gem时通过编译参数手动补全缺失的定义即可完成安装,不会修改系统现有依赖:

gem install mysql2 -v '0.3.21' -- --with-cflags="-DMYSQL_SECURE_AUTH=MYSQL_DEFAULT_AUTH -Dmy_bool=bool"

如果是通过 bundler 安装,执行以下命令配置后再执行 bundle install 即可:

bundle config set --local build.mysql2 "--with-cflags='-DMYSQL_SECURE_AUTH=MYSQL_DEFAULT_AUTH -Dmy_bool=bool'"

方案2:替换系统MySQL开发库为5.7版本

如果不想每次安装都加参数,可以将本地的MySQL客户端开发库降级为5.7版本:

  • 先卸载现有8.0版本的开发包
sudo apt remove -y libmysqlclient-dev default-libmysqlclient-dev
sudo apt autoremove -y
  • 配置MySQL 5.7的官方APT源,安装时版本选择5.7系列
  • 更新源后安装5.7版本的开发包
sudo apt install -y libmysqlclient-dev=5.7.*
  • 正常安装对应版本gem即可
gem install mysql2 -v '0.3.21'

方案3:升级mysql2版本(如果项目兼容)

如果你的项目对mysql2版本没有强制要求,可以升级到0.4.10及以上版本,这些版本已经原生适配MySQL 8.0客户端库:

gem install mysql2 -v '0.4.10'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:06:04