【问题标题】:Gem::LoadError Specified 'mysql2' for database adapter, but the gem is not loadedGem::LoadError 为数据库适配器指定了 'mysql2',但是 gem 没有加载
【发布时间】:2015-12-04 18:26:40
【问题描述】:
我正在尝试运行一个 Rails 应用程序。一切都很基本。
我的 gemfile 是
gem 'rails', '4.0.0'
gem 'mysql2'
database.yml 是
发展:
适配器:mysql2
编码:utf8
数据库:#new_app_development
池:5
用户名:root
密码:密码
主机:本地主机
宝石列表给出
mysql2 (0.4.0)
但我仍然收到 Gem::LoadError
为数据库适配器指定了“mysql2”,但未加载 gem。将gem 'mysql2' 添加到您的 Gemfile。
我尝试了 bundle install 和 gem install mysql2。
【问题讨论】:
标签:
ruby-on-rails
gem
rubygems
【解决方案1】:
它不加载 mysql2 gem,因为新版本的 mysql2(0.4.1) gem 无法加载 mysql2_adaptor。这对我有用。
gem 'mysql2', '~> 0.3.13'
然后运行
bundle install
如果仍然遇到问题,那么This solution 一定会有所帮助
注意:我假设您的系统上安装了 mysql 数据库:P
【解决方案2】:
gem 'mysql2', '~> 0.3.20'
错误:执行 gem 时 ... (Gem::CommandLineError)
Unknown command mysql2,
但是
gem install mysql2
构建原生扩展。这可能需要一段时间...
成功安装mysql2-0.4.1
已安装 1 个宝石
然后捆绑安装,但这种组合不起作用
【解决方案3】:
这是由 mysql2 于 9 月 8 日刚刚升级到 0.4.0 (see here) 引起的,它与当前的 rails 版本存在兼容性问题。因为默认情况下,rails 没有在Gemfile 中指定mysql2 的版本,所以一旦你发出命令bundle,rails 将始终从远程安装最新的mysql2,即@987654332 @ 在这种情况下。
Forturnly,rails 官方已经解决了这个问题,他们将在下一个rails 4.2(see here) 支持mysql2 0.4.0
显然,解决方案是通过在Gemfile 中将其版本指定为0.3.x 来降级mysql2,如下所示:
gem 'mysql2', '~> 0.3.20'
然后,发出命令bundle。