2011-05-26 77 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。