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 и вызывает проблемы совместимости
ответ на этот конкретный вопрос относительно того, когда он был опубликован и используется версия Rails, заключается в том, что проблема вызвана выполнением 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 в 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.