Rails 4-Gem:: LoadError: указан 'mysql2' для адаптера базы данных, но gem не загружен


в моем gemfile у меня есть:

gem 'mysql2'

базы данных.yml выглядит следующим образом:

default: &default
  adapter: mysql2
  database: <%= ENV['db_name'] %>
  username: <%= ENV['db_user'] %>
  password: <%= ENV['db_pass'] %>
  host:     <%= ENV['db_host'] %>
  pool: 32
  socket:   <%= ENV['socket'] %>

development:
  <<: *default

production:
  <<: *default

я запустил оба bundle update и bundle install и мой Gemfile.замок показывает mysql2.

однако, когда я запускаю rake db:migrate Я получаю это как на моем компьютере, так и на промежуточном сервере:

myproject.com(master)$ rake db:migrate
WARNING: Use strings for Figaro configuration. 10000012508 was converted to "10000012508".
WARNING: Use strings for Figaro configuration. 860526407370038 was converted to "860526407370038".
rake aborted!
Gem::LoadError: 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).
.....

просто чтобы убедиться, что не было плохой версии mysql2 или что-то еще, я сделал bundle clean --force и побежал bundle install и bundle update снова и когда я запускаю gem list Я вижу mysql2 (0.4.0) и нет остальные версии.

любые идеи будут очень признательны.


решение

в настоящее время это проблема с Rails 4.1.x и 4.2.х, за это сообщить об ошибке, это будет исправлено в следующем выпуске rails 4.2.x (кредит dcorr в комментариях по ссылке).

в то же время вы можете исправить, сделав понижение до версии 0.3.18 mysql2, добавив эту строку в свой gemfile:

gem 'mysql2', '~> 0.3.18'
9 146

9 ответов:

просто еще одно обновление - решение вопроса является правильным.

4-й комментарий стоит принять к сведению:

это не ошибка с mysql2, это проблема с требованием в адаптер ActiveRecord:http://github.com/rails/rails/issues/21544. Это фиксируется в rails master: https://github.com/rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692

я смог завязать Rails 4.2.4 до 4-2-stable филиал и получить его работу с последней mysql2:

enter image description here

gem 'rails', '~> 4.2.4', git: "git://github.com/rails/rails.git", branch: '4-2-stable'
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw] #-> Rails 4.1+

#DB
gem 'mysql2'

так же:

gem 'mysql2', '~> 0.3.18' этот камень работает с rails version 4.x.x

если установить gem 'mysql2', '~> 0.4.0' Он создает ошибку загрузки gem и вызывает проблемы совместимости

ответ на этот конкретный вопрос относительно того, когда он был опубликован, и версия используемых рельсов заключается в том, что проблема вызвана выполнением bundle update и ваши обновления версии mysql2 до 0.4.x, который имеет проблему несовместимости с последними Rails ActiveRecord.

опять же, обратите внимание, что это не решение для людей, использующих более старые версии Rails / ActiveRecord.

быстрое решение состоит в том, чтобы просто указать mysql2 версия в вашем gemfile как следует:

gem 'mysql2', '0.3.20'

долгое решение будет ждать либо обновления ActiveRecord или что-то в mysql2, чтобы изменить.

Если вы можете обновить свою версию rails, то измените свой Gemfile на это, и это решит проблему без понижения версии mysql2 gem:

gem 'rails', '4.2.6'

Как полный новичок я запутался о том , как это сделать, так что я просто сделал пробную проверку и, наконец, получил мой сервер работает, вот как я получил его работу .

попасть в файл рабочего каталога ("работа") и оттуда попасть в файл приложения, которое вы создали("sample_app"), который имеет mysql 2 установлен перейти к файлу gem ("Gemfile") edit gem 'mysql2' до жемчужина'', '~ > 0.3.18'

теперь вернитесь к cmd и запустите команду " bundle устанавливать."

поэтому каталог для редактирования файла с учетом вышеуказанных файлов в скобках должен быть . "c\work\sample_app\Gemfile"

надеюсь, что немного помог .

это обычно происходит, когда вам не хватает некоторых пакетов MySQL на вашем компьютере. Вы получаете какие-либо ошибки от gem install mysql2? Какой ОС вы работаете?

Если на debian или ubuntu попробовать sudo apt-get install libmysqlclient-dev.

также убедитесь, что драгоценный камень не помещается внутри group заявление в вашем Gemfile.

эта проблема была решена здесь:https://github.com/brianmario/mysql2/issues/950

Для Рельсов 4.x пожалуйста, прикрепите камень к mysql2 '~ > 0.4.0', чтобы избежать 0.5.X обновление.

Gemfile:

gem 'rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'

затем запустите bundle update rails mysql2

в настоящее время я использую mysql v 8.0.11

была такая же проблема, но при добавлении source 'https://rubygems.org' в верхней части файла Gem решена проблема.

действия:

добавить source 'https://rubygems.org' в ваш файл gem. Прокомментируйте mysql2 gem и добавить gem 'mysql2', '~> 0.3.18' Беги bundle install

попробуйте это:

bundle update mysql2

эта команда обновит ваш драгоценный камень 'mysql2' до последней версии (должно быть 0.3.17 или выше) и запустит ваш сервер rails.