2011-05-26 78 views
16

我无法找到解决此问题的解决方案。我发现了错误rails mysql适配器错误

请安装MySQL适配器: '安装了activerecord-mysql的适配器'

当我请指定ruby-mysqlmysql2在我Gemfile。这只发生在我升级到Rails 3.1.0-rc1之后。我正在运行OSX 10.6,Ruby 1.9.2。

cody$ rails c 
/Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `rescue in establish_connection': Please install the mysql adapter: `gem install activerecord-mysql-adapter` (mysql is not part of the bundle. Add it to Gemfile.) (RuntimeError) 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/connection_adapters/abstract/connection_specification.rb:68:in `establish_connection' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in `establish_connection' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/railtie.rb:69:in `block (2 levels) in <class:Railtie>' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.1.0.rc1/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.1.0.rc1/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.1.0.rc1/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.1.0.rc1/lib/active_support/lazy_load_hooks.rb:42:in `each' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.1.0.rc1/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/base.rb:2135:in `<top (required)>' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc1/lib/active_record/railtie.rb:34:in `block in <class:Railtie>' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/railtie.rb:177:in `call' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/railtie.rb:177:in `block in load_console' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/railtie.rb:177:in `each' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/railtie.rb:177:in `load_console' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/application.rb:115:in `block in load_console' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/application/railties.rb:8:in `each' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/application/railties.rb:8:in `all' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/application.rb:115:in `load_console' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/commands/console.rb:26:in `start' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/commands/console.rb:8:in `start' 
from /Users/cody/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc1/lib/rails/commands.rb:40:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

这里是gem env输出

cody$ gem env 
RubyGems Environment: 
- RUBYGEMS VERSION: 1.6.2 
- RUBY VERSION: 1.9.2 (2011-02-18 patchlevel 180) [x86_64-darwin10.7.3] 
- INSTALLATION DIRECTORY: /Users/cody/.rvm/gems/ruby-1.9.2-p180 
- RUBY EXECUTABLE: /Users/cody/.rvm/rubies/ruby-1.9.2-p180/bin/ruby 
- EXECUTABLE DIRECTORY: /Users/cody/.rvm/gems/ruby-1.9.2-p180/bin 
- RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-darwin-10 
- GEM PATHS: 
    - /Users/cody/.rvm/gems/ruby-1.9.2-p180 
    - /Users/cody/.rvm/gems/[email protected] 
- GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - :sources => ["http://gems.rubyforge.org/", "http://gems.github.com"] 
- REMOTE SOURCES: 
    - http://gems.rubyforge.org/ 
    - http://gems.github.com 
+5

我相信我已经解决了我的问题。我在database.yml中设置了'adapter:mysql2'而不是'adapter:mysql' 我对这些噪音表示歉意。 – codr 2011-05-26 16:10:32

+0

建议原始海报接受Brad Folkens的回答 – 2012-03-13 20:15:12

回答

11

我不得不强制使用的mysql2宝石版本0.2.7,并试图3.0.7应用升级我的导轨3.1.0.rc1,我也注意到,你还需要Gemfile中的以下新宝石:

gem 'mysql2', '< 0.3' # as stated above 

# Asset template engines 
gem 'json' 
gem 'sass' 
gem 'coffee-script' 
gem 'uglifier' 
# other required things for rails 3.1 
gem 'jquery-rails' 
gem 'mustang' # this is ONE execjs backend of many, and the only one that worked for me. 

告诉我,如果这对你有用。

+1

限制宝石版本为'<0.3'的任何理由? – jordanstephens 2012-03-02 18:37:41

56

您必须将config/database.yml更改为使用mysql2适配器,而不是mysql

所以更换:

adapter: mysql 

有了:

adapter: mysql2 
+1

对任何人在Heroku上使用Amazon RDS插件的说明,您需要进行此更改,还需要更改RDS插件中的DB URL以使用“mysql2://”而不是“mysql://'否则你仍然会得到错误。 – 2012-01-27 11:40:48

+0

谢谢,这对我有用;) – 2012-03-19 09:42:11

1

解决了这一问题,通过更新的Gemfile我的应用程序,以确定mysql2作为软件包的一部分。

要做到这一点,浏览到您的应用程序的根目录,运行open gemfile

添加行gem 'mysql2', '< 0.3.7'正下方的宝石线轨。

虽然在你的应用程序的根端,运行bundle install

运行bundle show mysql2验证包工作。你现在应该很好地使用适配器。

我的环境是Rails 3.1,MySql 5.5,Ruby 1.9.2。

0

我在Windows上创建了一个Rails项目,并将它移动到运行Fedora的机器上。我通过将“Gemfile.lock”重命名为“old_Gemfile.lock”来解决此问题。当然,您仍然必须将适配器指定为'mysql2',并在gemfile中包含适当的gem。