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

Mac M1 Pro用Homebrew重装MySQL后Rails 7出现KeyError求助

问题原因及解决方向

1. mysql2 gem版本不兼容MySQL 8.3

MySQL 8.3对数据库协议的字段元数据解析做了细微调整,部分旧版本的mysql2 gem(比如0.5.5以下版本)处理时会保留字段名末尾的空字节(\x00\x00)。Rails代码里用:Field符号去匹配哈希键,但实际返回的键是带空字节的:"Field\x00\x00",直接触发KeyError。

解决方式:

  • 修改Gemfile,指定安装mysql2最新稳定版:
    gem 'mysql2', '>= 0.5.6'
    
  • 执行bundle install,让gem重新编译适配。

2. M1架构下mysql2 gem编译路径错误

Mac M1是arm64架构,Homebrew安装的MySQL默认是arm版本。如果之前的mysql2 gem是通过Rosetta兼容模式编译,或者编译时没有正确指向Homebrew的MySQL配置文件,会导致字段解析逻辑异常。

解决方式:

  • 先卸载旧的mysql2 gem:
    gem uninstall mysql2
    
  • 配置bundle指向Homebrew的MySQL路径后重新安装:
    bundle config set mysql2 --with-mysql-config=$(brew --prefix mysql)/bin/mysql_config
    bundle install
    

3. 数据库编码配置不匹配

MySQL 8.3默认字符集为utf8mb4,如果Rails的database.yml里编码设置和数据库端不一致,可能导致字段名返回时携带额外空字节。

解决方式:

  • 检查config/database.yml的编码配置,确保和MySQL端一致:
    development:
      adapter: mysql2
      encoding: utf8mb4
      collation: utf8mb4_unicode_ci
      # 其他数据库连接配置...
    
  • 重启Rails服务器后测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:07:01