Подтвердить что ты не робот

Ошибка адаптера rails mysql

У меня возникли проблемы с поиском решения этой проблемы. Я получаю сообщение об ошибке

Пожалуйста, установите адаптер mysql: 'gem install activerecord-mysql-adapter'

когда я укажу либо ruby-mysql, либо mysql2 в моем 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
4b9b3361

Ответ 1

Мне пришлось принудительно использовать использование mysql2 gem версии 0.2.7 и при попытке обновить мое приложение rails 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.

Скажите, если бы это сработало для вас.

Ответ 2

Вам нужно будет изменить config/database.yml, чтобы использовать mysql2 вместо mysql.

Итак, замените:

adapter: mysql

С

adapter: mysql2

Ответ 3

Исправлена ​​ошибка, обновляя gemfile для моего приложения, чтобы определить mysql2 как часть пакета.

Чтобы сделать это, перейдите к корню вашего приложения, запустите open gemfile

Добавьте строку gem 'mysql2', '< 0.3.7' прямо под линией драгоценных камней для рельсов.

В терминале в корне вашего приложения запустите bundle install

Запустите bundle show mysql2, чтобы проверить, работает ли связанный пакет. Теперь вам лучше идти с адаптером.

Моя среда - Rails 3.1, MySql 5.5, Ruby 1.9.2.

Ответ 4

Я создал проект Rails в Windows и переместил его на машину с Fedora. Я решил эту проблему, переименовав "Gemfile.lock" в "old_Gemfile.lock". Конечно, вы должны указать адаптер как "mysql2" и включить соответствующий камень в свой gemfile.