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

Rails 5.1.6使用mysql2迁移数据库时遇NameError错误求助

解决Rails 5.1.6 + mysql2 gem执行rake db:migrate时的NameError: uninitialized constant mysql2::Client::found_rows错误

这个错误本质是mysql2 gem版本和Rails 5.1.6不兼容导致的——mysql2 0.6.x及以上版本移除了found_rows这个常量,但Rails 5.1.6的代码还在尝试引用它。下面是一步步的解决方法:

方法一:锁定兼容的mysql2版本

  1. 打开项目根目录下的Gemfile,找到mysql2的配置行,把它修改为兼容Rails 5.1.6的版本:

    gem 'mysql2', '~> 0.5.3'
    

    (如果0.5.x还是有问题,可以尝试更低的~> 0.4.13版本,这个版本和Rails 5.1.x适配性很好)

  2. 执行bundle命令更新依赖:

    bundle install
    
  3. 重新执行迁移命令:

    rake db:migrate
    # 或者Rails 5+推荐用:
    rails db:migrate
    

方法二:解决XAMPP环境下mysql2编译路径问题(如果方法一无效)

因为你用的是XAMPP的MySQL环境,有时候bundle安装mysql2时会找不到mysql的配置文件,导致native扩展编译不完全,也可能触发这类错误。可以手动指定mysql_config的路径:

  1. 先找到XAMPP中mysql_config的位置:

    • Mac系统通常是:/Applications/XAMPP/xamppfiles/bin/mysql_config
    • Windows系统通常是:C:\xampp\mysql\bin\mysql_config.exe
    • Linux系统可能是:/opt/lampp/bin/mysql_config
  2. 配置bundle指向这个路径,然后重新安装:

    # Mac/Linux
    bundle config set mysql2 --with-mysql-config=/Applications/XAMPP/xamppfiles/bin/mysql_config
    bundle install
    
    # Windows(命令行需以管理员身份运行)
    bundle config set mysql2 --with-mysql-config=C:\xampp\mysql\bin\mysql_config.exe
    bundle install
    
  3. 再次尝试执行迁移命令。

额外检查点

  • 确保XAMPP的MySQL服务已经启动(打开XAMPP控制面板,确认MySQL模块是Running状态)
  • 如果之前安装过高版本的mysql2,建议先清理旧的gem:gem uninstall mysql2,然后再执行bundle install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:08:39