请安装MySQL适配器,命令为'gem install activerecord-mysql-adapter'。

42

我在寻找解决这个问题的方法,但遇到了困难。我收到了以下错误信息:

Please install the mysql adapter: 'gem install activerecord-mysql-adapter'

 /Users/ Andy/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/rubygems_integration.rb:143:in `block in replace_gem': Please install the mysql adapter: `gem install activerecord-mysql-adapter` (mysql is not part of the bundle. Add it to Gemfile.) (LoadError)
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/mysql_adapter.rb:5:in `<top (required)>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `block in require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:48:in `resolve_hash_connection'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:39:in `resolve_string_connection'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:23:in `spec'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:127:in `establish_connection'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/railtie.rb:76:in `block (2 levels) in <class:Railtie>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/lazy_load_hooks.rb:26:in `on_load'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/railtie.rb:74:in `block in <class:Railtie>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:30:in `run'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:54:in `each'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:54:in `run_initializers'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/application.rb:136:in `initialize!'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/ Andy /config/environment.rb:5:in `<top (required)>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `block in require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /config.ru:4:in `block in <main>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
    from /Users/ Andy /config.ru:1:in `new'
    from /Users/ Andy /config.ru:1:in `<main>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands/server.rb:46:in `app'
    from /Users/ Andy/mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands/server.rb:70:in `start'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:55:in `block in <top (required)>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:50:in `tap'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:50:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>' ```

这是gem env的输出结果。

  RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.2.0]
  - INSTALLATION DIRECTORY: /Users/ Andy/.rvm/gems/ruby-1.9.2-p290
  - RUBY EXECUTABLE: /Users/ Andy/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/ Andy/.rvm/gems/ruby-1.9.2-p290/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/ Andy/.rvm/gems/ruby-1.9.2-p290
     - /Users/ Andy/.rvm/gems/ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

如果我可以提供更多信息,请让我知道。

谢谢, -Andy


P.s - 我的database.yaml已经有了mysql2


那个,你试过安装它说你需要的 gem 吗? - Corbin
我尝试了一下,但是出现了以下错误:错误:在任何存储库中都找不到有效的宝石“activerecord-mysql-adapter”(>=0) 错误:可能的替代方案有:activerecord-jdbcmysql-adapter、activerecord-jdbcmssql-adapter、activerecord-jdbc-adapter、activerecord-odbc-adapter、activerecord-nulldb-adapter - Andy
16个回答

114
问题出在你的文件config/database.yml上。
你应该有一行指定适配器是mysql2(而不是mysql)。
adapter: mysql2

与其

adapter: mysql

17

对我有帮助的是在config/database.yml中指定适配器mysql2,而不是mysql(请注意数字!)。


10

1)您需要更新config/database.yml文件并更改:

adapter: mysql

进入

adapter: mysql2

2) 您需要更新您的 Gemfile 文件,并明确添加 activerecord-mysql2-adapter 依赖项:

gem 'mysql2'
gem 'activerecord-mysql2-adapter'

9

我从来不会相信这一点,但删除我的database.yml文件并重新创建它实际上也为我解决了问题。感谢Tyler。我花了几个小时安装和卸载不同版本的gems mysql、mysql2、activerecord-mysql-adapter等等......最后,我的gemfile如下:

gem 'mysql2', "~>0.3.11"

我的database.yml文件中有以下内容

adapter: mysql2

我使用的是OSX 10.8操作系统,rails版本为3.2.8,ruby版本为1.9.3。
顺便提一下,在我的Windows 7电脑上也遇到了mysql2适配器的同样问题。卸载甚至删除activerecord-mysql-adapter gem目录似乎也很关键。

那个mysql2版本 ~>0.3.11 真的救了我。 - Yakob Ubaidi

6
这可能有点晚了,但是bundle install正在安装0.4.0版本。所以我尝试编辑gem文件,并将mysql2替换为
gem 'mysql2',"〜> 0.3.11"
然后在终端中运行
bundle install
(这将安装mysql2 0.3.11而不是最新版本),我认为active record在使用最新版本时会出现问题。希望这可以帮到你。

6

您想安装 mysql2 gem

实际上,您应该将其添加到您的 Gemfile 中:

gem "mysql2"

然后使用Bundler安装您的gem包:

bundle install

1
mysql2宝石已经安装并且在我的gemfile中,我也执行了bundle命令,但是错误仍然存在。 - Andy
3
你需要将适配器设置为mysql2而不是mysql。请问你的适配器设置是什么? - bhamby
@Galador mysql2。看起来问题实际上是其他原因导致的,现在它已经可以工作了。出于某种原因。 :) - Emil Ahlbäck
使用了 gem "mysql"。顺便提一下,我的 database.yml 中配置的数据库也是 "mysql"。 - hari_sree
2
在我的情况下,与 OP 相同的错误绝对是由于在我的 database.yml 中将适配器设置为“mysql”而不是“mysql2”。 - SciPhi
遇到了同样的问题。通过在config/database.yml中将适配器从“mysql”更改为“mysql2”解决了问题。 - Dimitris

4

步骤1。 在Gemfile中使用gem 'mysql2',"〜>0.3.11"代替gem 'mysql2'

步骤2。mysqllib.dll(可在mysql安装路径 C:\wamp\bin\mysql\mysql5.5.24\lib 找到)放置在C:\ruby2.0.0\bin文件夹中,可以解决rake db:migrate问题,并成功将Rails与mysql连接(database.yml包含mysql2)

我正在运行Windows 7,64位,mysql 64位,ruby 2.0.0 [x64-mingw32]

感谢大家的建议。


这是对原始问题的回答还是对其他答案的回应?如果是后者,它应该是一条评论。 - ASGM
当我运行命令 bin/rails generate rspec:install 时,我得到了错误消息 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).这个问题出现在我没有对mysql2gem 进行版本规定时,也出现在我指定其版本为~> 0.4时。你的第一步骤(当然,编辑Gemfile后运行bundle install`)为我解决了这个问题。谢谢。 - Teemu Leisti

3
如果没有任何帮助(在您的database.yml中使用mysql2作为适配器),并且您正在使用RVM管理您的ruby版本,这里是最简单的解决方法:尝试删除所有旧的gemset(包括global),安装新的ruby版本并重新进行bundle。我可以用这种方法解决问题。

3

在升级到Rails 3.2后,我在OSX Lion上遇到了与OP相同的问题。删除所有gems,bundle install等都没有起作用。Gemfile和database.yml正确地指定了mysql2。

最终,我删除并重新创建了我的database.yml,一切又恢复正常了。这可能是文件中的一个错别字或隐藏字符导致的。


2

您已经提到了您的database.yaml文件中已经有mysql2

值得检查的是,您是否已安装了activerecord-mysql2-adapter。 (注意-mysql2-


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接