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 ответов:
просто еще одно обновление - решение вопроса является правильным.
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
: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