Ответ 1
Проблема заключается в вашем файле config/database.yml
У вас должна быть строка, указывающая, что адаптер - это mysql2 (а не mysql)
adapter: mysql2
Вместо
adapter: mysql
У меня возникли проблемы с поиском решения этой проблемы. Я получаю сообщение об ошибке:
Please install the mysql adapter: 'gem install activerecord-mysql-adapter'
/Users/ Andy/.rvm/gems/[email protected]/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/[email protected]
- 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
.
Проблема заключается в вашем файле config/database.yml
У вас должна быть строка, указывающая, что адаптер - это mysql2 (а не mysql)
adapter: mysql2
Вместо
adapter: mysql
Что помогло мне, было указать адаптер mysql2 вместо mysql (обратите внимание на цифру!) в config/database.yml.
Я бы никогда не поверил бы этому, но удаление моего файла database.yml и повторное создание его на самом деле решили проблему для меня тоже. Спасибо Тайлеру. Я потратил несколько часов на установку и удаление различных версий gems mysql, mysql2, activerecord-mysql-adapter и т.д. В конце мой gemfile имеет
gem 'mysql2', "~>0.3.11"
и мой файл database.yml имеет
adapter: mysql2
Я на OSX 10.8, рельсы 3.2.8 и ruby 1.9.3.
Кстати, у меня возникли те же проблемы с адаптером mysql2 на моей машине с Windows 7. Деинсталляция и даже удаление каталога для жука activerecord-mysql-адаптера также были важны.
1) Вам необходимо обновить файл config/database.yml
и изменить:
adapter: mysql
в
adapter: mysql2
2) Вам нужно обновить Gemfile
и явно добавить там зависимость activerecord-mysql2-adapter
:
gem 'mysql2'
gem 'activerecord-mysql2-adapter'
Вы хотите установить mysql2
gem.
Действительно, вы должны добавить его в свой Gemfile
:
gem "mysql2"
И затем установите свои драгоценные камни со связкой:
bundle install
Возможно, это было поздно, но установка пакета была установлена 0.4.0. Поэтому я попытался отредактировать файл gem и заменить mysql2
на
gem 'mysql2', "~>0.3.11"
а затем
bundle install
в терминале (это установит mysql2 0.3.11, а не последнюю версию). Я думаю, что у активной записи проблемы с последней версией. Я надеюсь, что это поможет
У меня была та же проблема, что и OP на OSX Lion после обновления до Rails 3.2. Удаление всех драгоценных камней, установка пакета и т.д. Не сработала. Gemfile и database.yml правильно указали mysql2.
В конце концов, я удалил и воссоздал свой database.yml, и все работает снова. Вероятно, это был опечаток или скрытый символ в файле.
Шаг 1. gem 'mysql2', "~>0.3.11"
вместо gem 'mysql2'
в Gemfile
Шаг 2. размещение mysqllib.dll
(доступно при установке mysql C:\wamp\bin\mysql\mysql5.5.24\lib
) в папке C:\ruby2.0.0\bin
разрешило проблему rake db:migrate
и успешно связало мои рельсы с mysql (database.yml
содержит mysql2)
Я запускаю Windows 7, 64bit, mysql 64bit, ruby 2.0.0 [x64-mingw32]
Спасибо всем за ваши материалы.
Возможно, вы изменили адаптер на mysql2 только для определенной среды, но не передаете среду команде rake.
например. Я только изменил mysql на mysql2 в рабочей среде, но работал
rake generate_secret_token
когда я изменил его на следующее:
rake generate_secret_token RAILS_ENV=production
Если ничего не помогает (у вас есть mysql2
как адаптер в database.yml
), и вы используете RVM для управления вашими рубиновыми версиями, вот простейшее решение:
Попробуйте удалить все свои старые гемзеты (включая global
), установите новую рубиновую версию и пакет снова. Я мог бы решить проблему таким образом.
вы упомянули, что ваш файл database.yaml уже имеет mysql2
.
Его стоит проверить, установлен ли activerecord-mysql2-adapter
.
(Примечание -mysql2-
)
Я бы сказал, что измените прокомментированную информацию сверху в database.yml на
#
# Install the MYSQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
second: добавьте "gem" mysql2 '"(что всегда находится в двойных кавычках) в gemfile.
сохранить все, установить пакет. Надеюсь, что это поможет.
или это может быть опечатка.
Я столкнулся с той же проблемой и получаю ту же ошибку при запуске команды
gem install activerecord-mysql2-adapter
вам нужно установить libmysqlclient-dev
sudo apt-get install libmysqlclient-dev
Это работает для меня
В моем случае, когда я также получил эту ошибку:
рейк прерван! Пожалуйста, установите адаптер mysql:
gem install activerecord-mysql-adapter
(mysql не входит в комплект поставки. Добавьте его в Gemfile.)
После того, как я искал Google и пробовал много способов, это не сработало. Наконец, ответ
open gemfile
gem 'mysql2', '< 0.3.7'
непосредственно под линией драгоценных камней для рельсов.Я просто добавил следующую строку в свой Gemfile, и она сработала:
gem "mysql"
До:
source 'https://rubygems.org'
gem "rails", "3.2.16"
gem "jquery-rails", "~> 2.0.2"
gem "coderay", "~> 1.1.0"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "builder", "3.0.0"
...
После:
source 'https://rubygems.org'
gem "mysql"
gem "rails", "3.2.16"
gem "jquery-rails", "~> 2.0.2"
gem "coderay", "~> 1.1.0"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "builder", "3.0.0"
...