Rails 4 - Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded
Rails 4 - Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded
在我的 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 report,它将在下一版本 rails 4.2.x(在 link 的评论中归功于 dcorr)。
与此同时,您可以通过将此行添加到您的 gemfile 来降级到 mysql2 的 0.3.18 版本来修复:
gem 'mysql2', '~> 0.3.18'
这通常发生在您的机器上缺少某些 mysql 软件包时。你从 gem install mysql2
得到任何错误吗? OS 你在做什么?
如果在 debian 或 ubuntu 上尝试 sudo apt-get install libmysqlclient-dev
。
还要确保 gem 没有放在 Gemfile 中的 group
语句中。
关于这个问题的发布时间和使用的 Rails 版本的答案是,问题是由 bundle update
和您的 mysql2 版本引起的更新为 0.4.x,它与最新的 Rails ActiveRecord.
存在不兼容问题
再次请注意,这不是使用旧版本 Rails / ActiveRecord 的人的解决方案。
快速解决方案是在您的 gemfile 中简单地指定 mysql2
版本,如下所示:
gem 'mysql2', '0.3.20'
长期的解决方案是等待 ActiveRecord 的更新或 mysql2 中的某些内容发生更改。
就这样:
gem 'mysql2', '~> 0.3.18'
这个 gem 适用于 rails version 4.x.x
如果安装 gem 'mysql2', '~> 0.4.0'
它会产生 gem 加载错误并导致兼容性问题
进一步更新 - 问题中的解决方案是正确的。
第4条评论值得注意:
This isn't a bug with mysql2, it's a problem with the requirement in
the ActiveRecord adapter: http://github.com/rails/rails/issues/21544.
This is fixed in rails master:
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'
作为一个完全的初学者,我对如何执行此操作感到困惑,所以我只是进行了试验检查并最终让我的服务器正常工作,这是我如何让它工作的。
进入工作目录("work")的文件,然后从那里进入您创建的应用程序("sample_app")的文件,其中安装了 mysql 2 转到 gem 文件 ("Gemfile")编辑 gem 'mysql2' 到 gem 'mysql2', '~> 0.3.18'
现在返回 cmd 并 运行 命令 "bundle install"。
所以考虑到上述括号中的文件,编辑文件的目录应该是。
"c\work\sample_app\Gemfile"
希望我能帮到你。
有同样的问题,但将 source 'https://rubygems.org'
添加到 gem 文件的顶部解决了问题。
步骤:
将 source 'https://rubygems.org'
添加到您的 gem 文件。
注释掉 mysql2 gem
并添加 gem 'mysql2', '~> 0.3.18'
运行bundle install
如果你可以升级你的 rails 版本,然后将你的 Gemfile 更改为这个,它会在不降级 mysql2 gem 版本的情况下解决问题:
gem 'rails', '4.2.6'
试试这个:
bundle update mysql2
此命令会将您的 'mysql2' gem 更新到最新版本(应为 0.3.17 或更高版本)并启动您的 rails 服务器。
此问题已在此处解决:https://github.com/brianmario/mysql2/issues/950
For Rails 4.x please pin the gem to mysql2 '~> 0.4.0' to avoid the 0.5.x upgrade.
宝石文件:
gem 'rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'
然后运行bundle update rails mysql2
我目前正在使用 mysql v 8.0.11
gem 'rails', '4.2.11.3'
gem 'mysql2', '~> 0.4.0'
试试这个。这将消除 mysql2 加载错误。
在我的 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 report,它将在下一版本 rails 4.2.x(在 link 的评论中归功于 dcorr)。
与此同时,您可以通过将此行添加到您的 gemfile 来降级到 mysql2 的 0.3.18 版本来修复:
gem 'mysql2', '~> 0.3.18'
这通常发生在您的机器上缺少某些 mysql 软件包时。你从 gem install mysql2
得到任何错误吗? OS 你在做什么?
如果在 debian 或 ubuntu 上尝试 sudo apt-get install libmysqlclient-dev
。
还要确保 gem 没有放在 Gemfile 中的 group
语句中。
关于这个问题的发布时间和使用的 Rails 版本的答案是,问题是由 bundle update
和您的 mysql2 版本引起的更新为 0.4.x,它与最新的 Rails ActiveRecord.
再次请注意,这不是使用旧版本 Rails / ActiveRecord 的人的解决方案。
快速解决方案是在您的 gemfile 中简单地指定 mysql2
版本,如下所示:
gem 'mysql2', '0.3.20'
长期的解决方案是等待 ActiveRecord 的更新或 mysql2 中的某些内容发生更改。
就这样:
gem 'mysql2', '~> 0.3.18'
这个 gem 适用于 rails version 4.x.x
如果安装 gem 'mysql2', '~> 0.4.0'
它会产生 gem 加载错误并导致兼容性问题
进一步更新 - 问题中的解决方案是正确的。
第4条评论值得注意:
This isn't a bug with mysql2, it's a problem with the requirement in the ActiveRecord adapter: http://github.com/rails/rails/issues/21544. This is fixed in rails master: 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'
作为一个完全的初学者,我对如何执行此操作感到困惑,所以我只是进行了试验检查并最终让我的服务器正常工作,这是我如何让它工作的。
进入工作目录("work")的文件,然后从那里进入您创建的应用程序("sample_app")的文件,其中安装了 mysql 2 转到 gem 文件 ("Gemfile")编辑 gem 'mysql2' 到 gem 'mysql2', '~> 0.3.18'
现在返回 cmd 并 运行 命令 "bundle install"。
所以考虑到上述括号中的文件,编辑文件的目录应该是。 "c\work\sample_app\Gemfile"
希望我能帮到你。
有同样的问题,但将 source 'https://rubygems.org'
添加到 gem 文件的顶部解决了问题。
步骤:
将 source 'https://rubygems.org'
添加到您的 gem 文件。
注释掉 mysql2 gem
并添加 gem 'mysql2', '~> 0.3.18'
运行bundle install
如果你可以升级你的 rails 版本,然后将你的 Gemfile 更改为这个,它会在不降级 mysql2 gem 版本的情况下解决问题:
gem 'rails', '4.2.6'
试试这个:
bundle update mysql2
此命令会将您的 'mysql2' gem 更新到最新版本(应为 0.3.17 或更高版本)并启动您的 rails 服务器。
此问题已在此处解决:https://github.com/brianmario/mysql2/issues/950
For Rails 4.x please pin the gem to mysql2 '~> 0.4.0' to avoid the 0.5.x upgrade.
宝石文件:
gem 'rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'
然后运行bundle update rails mysql2
我目前正在使用 mysql v 8.0.11
gem 'rails', '4.2.11.3'
gem 'mysql2', '~> 0.4.0'
试试这个。这将消除 mysql2 加载错误。