Windows系统下安装Ruby的mysql2 Gem失败求助
解决mysql2 gem原生扩展编译失败的问题
我完全懂折腾好几天还搞不定的崩溃感,千万别轻易放弃Ruby和Rails!针对你遇到的这个问题,咱们从几个常见的排查点入手,一步步解决:
1. 先确认位数匹配
你用的是Ruby30-x64(64位),一定要确保WAMP里的MySQL8.0.21也是64位版本。如果是32位MySQL,和64位Ruby不兼容,肯定会编译失败。可以去C:\wamp64\bin\mysql\mysql8.0.21里看安装目录说明,或者查看MySQL启动日志确认位数。
2. 检查Ruby DevKit是否正确安装
Ruby原生扩展编译必须依赖DevKit,如果你是用RubyInstaller装的Ruby,安装时一定要勾选对应版本的DevKit(Ruby3.0适配的是DevKit-mingw64-64)。如果没装,按下面步骤操作:
- 下载对应版本的DevKit,解压到比如
C:\RubyDevKit - 打开命令提示符,进入DevKit目录执行:
cd C:\RubyDevKit ruby dk.rb init ruby dk.rb install - 重启命令提示符后再尝试安装gem。
3. 调整mysql2 gem的版本
你当前安装的mysql2-0.5.3和Ruby3.0、MySQL8.0的兼容性可能存在问题。试试安装更新的兼容版本,比如0.5.4:
gem install mysql2 -v 0.5.4 -- --with-mysql-lib=C:\wamp64\bin\mysql\mysql8.0.21\lib --with-mysql-include=C:\wamp64\bin\mysql\mysql8.0.21\include
4. 改用MySQL Connector/C的库文件
有时候WAMP自带的MySQL缺少编译原生扩展需要的静态库文件(比如libmysql.lib),这时候可以直接用MySQL官方的Connector/C:
- 下载64位版的MySQL Connector/C 8.0.x,解压到本地目录(比如
C:\mysql-connector-c-8.0.21-winx64) - 用Connector/C的路径重新安装gem:
(注意gem install mysql2 -- --with-mysql-lib=C:\mysql-connector-c-8.0.21-winx64\lib\vs14 --with-mysql-include=C:\mysql-connector-c-8.0.21-winx64\includelib\vs14是Connector/C里对应VS编译的库目录,不同版本可能路径略有不同)
5. 配置环境变量并重启终端
把MySQL的bin目录加到系统PATH里:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在系统变量的
PATH里添加:C:\wamp64\bin\mysql\mysql8.0.21\bin - 关闭所有命令提示符窗口,重新打开后再执行安装命令。
6. 如果用Bundler管理依赖
如果是在Rails项目里,先在Gemfile里指定兼容的mysql2版本:
gem 'mysql2', '~> 0.5.4'
然后配置Bundler的编译参数:
bundle config set --local build.mysql2 "--with-mysql-lib=C:\wamp64\bin\mysql\mysql8.0.21\lib --with-mysql-include=C:\wamp64\bin\mysql\mysql8.0.21\include" bundle install
先从这几个方向排查,大部分情况下都能解决原生扩展编译失败的问题。如果还是不行,可以把完整的错误日志贴出来,咱们再进一步分析!
内容的提问来源于stack exchange,提问作者Noble Eugene
相关产品推荐
相关产品推荐

