Rails 4 – Gem :: LoadError:为数据库适配器指定'mysql2',但没有加载gem
在我的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 update
和bundle 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 install
和bundle update
,当我运行gem list
我看到了mysql2 (0.4.0)
,没有其他版本。
任何想法将不胜感激。
解
Rails 4.1.x和4.2.x目前是一个问题,根据这个bug报告 ,它将在rails 4.2.x的下一个发行版中得到修复(在链接评论中称为dcorr)。
与此同时,您可以通过将此行添加到您的gemfile来降级到版本0.3.18的mysql2:
gem 'mysql2', '~> 0.3.18'
只是进一步更新 – 问题的解决scheme是正确的。
第四点评价值得注意的是:
这不是mysql2的错误,这是ActiveRecord适配器中的需求的问题: http : //github.com/rails/rails/issues/21544 。 这是固定在铁轨大师: https : //github.com/rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692
我能够将Rails 4.2.4
绑定到4-2-stable
分支,并使用最新的mysql2
:
gem 'rails', '~> 4.2.4', git: "git://github.com/rails/rails.git", branch: '4-2-stable' gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw] #-> Rails 4.1+ #DB gem 'mysql2'
做就是了:
gem 'mysql2', '~> 0.3.18'
这个gem可以使用rails version 4.xx
如果安装gem 'mysql2', '~> 0.4.0'
会产生gem加载错误并导致兼容性问题
对于这个特定问题的回答,涉及何时发布以及Rails的版本是由于bundle update
而导致的问题,而且你的mysql2版本更新到0.4.x,这与最新的Rails ActiveRecord存在不兼容的问题。
再次请注意,这不是使用旧版Rails / ActiveRecord的人的解决scheme。
快速解决scheme是简单地指定gemfile中的mysql2
版本,如下所示:
gem 'mysql2', '0.3.20'
长期的解决办法是等待更新到ActiveRecord或在mysql2中的东西改变。
如果你能够升级你的rails版本,那么把你的Gemfile改为这个,它将解决这个问题,而不降级mysql2 gem版本:
gem 'rails', '4.2.6'
这通常发生在你的机器上缺less一些mysql包时。 你从gem install mysql2
得到任何错误? 你在做什么操作系统?
如果在debian或者ubuntu上试试sudo apt-get install libmysqlclient-dev
。
还要确保gem没有放在你的Gemfile中的group
声明中。
作为一个完整的初学者,我对如何做到这一点感到困惑,所以我只是做了一次试验性的检查,终于让我的服务器工作,这是我如何工作。
进入工作目录(“工作”)的文件,从那里进入你创build的应用程序的文件(“sample_app”),其中安装mysql 2转到gem文件(“Gemfile”)编辑gem'mysql2 '到gem 'mysql2','〜> 0.3.18'
现在回到cmd并运行命令“捆绑安装”。
所以考虑到上面的括号中的文件编辑文件的目录应该是。 “C:\工作\ sample_app \的Gemfile”
希望我有一些帮助。
有同样的问题,但添加source 'https://rubygems.org'
的顶部的解决问题。
脚步:
添加source 'https://rubygems.org'
到你的gem文件。 注释掉mysql2 gem
并添加gem 'mysql2', '~> 0.3.18'
运行bundle install
尝试这个:
bundle update mysql2
这个命令会把你的'mysql2'gem更新到最新版本(应该是0.3.17或更高版本)并启动你的rails服务器。