Skip to main content
 首页 » 编程设计

ruby-on-rails之Rails 4之Gem::LoadError:为数据库适配器指定了 'mysql2',但未加载 gem

2024年02月24日13freeliver54

在我的 gemfile 中,我有:

gem 'mysql2' 

我的database.yml如下:

default: &default 
  adapter: mysql2 
  database: <%= ENV['db_name'] %> 
  username: <%= ENV['db_user'] %> 
  password: <%= ENV['db_pass'] %> 
  host:     <%= ENV['db_host'] %> 
  pool: 32 
  socket:   <%= ENV['socket'] %> 
 
development: 
  <<: *default 
 
production: 
  <<: *default 

我已经运行了bundle updatebundle install并且我的Gemfile.lock显示了mysql2。

但是,当我运行 rake db:migrate 时,我在计算机和登台服务器上都会收到此信息:

myproject.com(master)$ rake db:migrate 
WARNING: Use strings for Figaro configuration. 10000012508 was converted to "10000012508". 
WARNING: Use strings for Figaro configuration. 860526407370038 was converted to "860526407370038". 
rake aborted! 
Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). 
..... 

为了确保 mysql2 版本不存在问题,我执行了 bundle clean --force 并运行了 bundle installbundle update 再次运行 gem list 时,我看到 mysql2 (0.4.0) 而没有其他版本。

任何想法将不胜感激。

<小时 />

解决方案

目前这是 Rails 4.1.x 和 4.2.x 的问题,根据此 bug report ,它将在下一个版本的 Rails 4.2.x 中修复(该链接的注释归功于 dcorr)。

同时,您可以通过将以下行添加到您的 gemfile 来降级到 mysql2 版本 0.3.18 来修复:

gem 'mysql2', '~> 0.3.18' 

请您参考如下方法:

就这样做:

gem 'mysql2', '~> 0.3.18' 此 gem 适用于 rails 版本 4.x.x

如果安装gem 'mysql2', '~> 0.4.0'它会产生gem加载错误并导致兼容性问题