Rails 4 - Gem:: LoadError: указанный "mysql2" для адаптера базы данных, но драгоценный камень не загружен
В моем gemfile я:
gem 'mysql2'
My database.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.lock показывает 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.x, за этот отчет об ошибке, будет исправлена в следующей версии rails 4.2.x(кредит для dcorr в комментариях к ссылке).
В то же время вы можете исправить, понизив до версии 0.3.18 mysql2, добавив эту строку в свой gemfile:
gem 'mysql2', '~> 0.3.18'
Ответы
Ответ 1
Простое обновление - правильное решение в вопросе.
4-й комментарий заслуживает внимания:
Это не ошибка с mysql2, это проблема с требованием в адаптер ActiveRecord: http://github.com/rails/rails/issues/21544. Это фиксируется в master-рельсе: https://github.com/rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692
Мне удалось привязать Rails 4.2.4
к ветке 4-2-stable
и заставить его работать с последним mysql2
:
![введите описание изображения здесь]()
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'
Ответ 2
Просто выполните:
gem 'mysql2', '~> 0.3.18'
этот драгоценный камень работает с rails version 4.x.x
если install gem 'mysql2', '~> 0.4.0'
он выдает ошибку загрузки gem и вызывает проблемы с совместимостью
Ответ 3
Ответ на этот конкретный вопрос относительно того, когда он был опубликован, и используемая версия Rails заключается в том, что проблема возникает из-за выполнения bundle update
и обновлений вашей версии mysql2 до 0.4.x, которая имеет проблему несовместимости с последними Rails ActiveRecord.
Опять же, обратите внимание, что это НЕ является решением для людей, использующих старые версии Rails/ActiveRecord.
Быстрое решение - просто указать версию mysql2
в вашем gemfile следующим образом:
gem 'mysql2', '0.3.20'
Большим решением будет ждать обновления ActiveRecord или что-то в mysql2 для изменения.
Ответ 4
Если вы можете обновить версию своего рельса, измените свой Gemfile на это, и он решит проблему без переопределения версии gem mysql2:
gem 'rails', '4.2.6'
Ответ 5
Это обычно происходит, когда вам не хватает некоторых пакетов mysql на вашем компьютере. Вы получаете ошибки от gem install mysql2
? На какой ОС вы работаете?
Если на debian или ubuntu попробуйте sudo apt-get install libmysqlclient-dev
.
Также убедитесь, что камень не помещен внутри оператора group
в Gemfile.
Ответ 6
Как полный новичок, я запутался в том, как это сделать, поэтому я просто проверил пробную версию и, наконец, получил работу моего сервера, вот как я получил работу.
войдите в файл рабочего каталога ( "work" ) и оттуда зайдите в файл созданного приложения ( "sample_app" ), в котором установлен mysql 2, перейдите в gem файл ( "Gemfile" ), отредактируйте gem 'mysql2' до gem 'mysql2', '~ > 0.3.18'
теперь вернитесь к cmd и запустите команду "bundle install".
поэтому каталог для редактирования файла с учетом вышеуказанных файлов в скобках должен быть.
"С\работа\sample_app\Gemfile"
надеюсь, что я помог.
Ответ 7
Имела ту же проблему, но добавила source 'https://rubygems.org'
в начало проблемы с gem файлом.
Шаги:
добавить source 'https://rubygems.org'
в ваш файл gem.
Прокомментируйте mysql2 gem
и добавьте gem 'mysql2', '~> 0.3.18'
Запустите bundle install
Ответ 8
попробуйте следующее:
bundle update mysql2
эта команда обновит ваш камень "mysql2" до последней версии (должно быть 0,3.17 или выше) и запустит сервер ваших рельсов.