[ruby-on-rails] Rails 4-Gem :: LoadError : 데이터베이스 어댑터에 대해 ‘mysql2’를 지정했지만 gem이로드되지 않았습니다

내 gemfile에는 다음이 있습니다.

gem 'mysql2'

내 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 updatebundle 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및 RAN bundle installbundle update다시 내가 실행할 때 gem list내가 볼 mysql2 (0.4.0)과 다른 버전.

어떤 아이디어라도 가장 감사하겠습니다.


해결책

현재이 버그 보고서에 따라 Rails 4.1.x 및 4.2.x의 문제입니다 . 다음 릴리스의 Rails 4.2.x (링크에 대한 주석에서 dcorr 로의 크레딧)에서 수정 될 것입니다.

그 동안 gemfile에 다음 줄을 추가하여 mysql2 버전 0.3.18로 다운 그레이드하여 수정할 수 있습니다.

gem 'mysql2', '~> 0.3.18'



답변

추가 업데이트 만하면 문제의 해결책이 정확합니다.

네 번째 의견은 다음 사항에 유의하십시오.

이 그것이 액티브 어댑터의 요구 사항에 문제가있어, mysql2와 버그가 아닙니다 http://github.com/rails/rails/issues/21544 . 레일 마스터에서 수정되었습니다 :
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로드 오류가 발생하고 호환성 문제가 발생합니다


답변

이 문제는 여기에서 해결되었습니다 : https://github.com/brianmario/mysql2/issues/950

Rails 4.x의 경우 gem을 mysql2 ‘~> 0.4.0’에 고정하여 0.5.x 업그레이드를 피하십시오.

젬 파일 :

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

그런 다음 실행 bundle update rails mysql2

현재 mysql v 8.0.11을 사용하고 있습니다.


답변

게시 된 날짜 및 사용중인 Rails 버전과 관련된이 특정 질문에 대한 답변은 문제가 bundle update 날짜 및 mysql2 버전이 0.4.x로 업데이트되어 최신 Rails ActiveRecord와 호환되지 않는 문제가 있다는 것입니다.

다시 말하지만, 이는 이전 버전의 Rails / ActiveRecord를 사용하는 사람들에게는 솔루션이 아닙니다.

빠른 해결책은 mysql2다음과 같이 gemfile에 버전을 지정하는 것입니다.

gem 'mysql2', '0.3.20'

긴 해결책은 ActiveRecord에 대한 업데이트 또는 mysql2의 내용이 변경 될 때까지 기다리는 것입니다.


답변

레일스 버전을 업그레이드 할 수 있다면 Gemfile을 다음과 같이 변경하면 mysql2 gem 버전을 다운 그레이드하지 않고도 문제가 해결됩니다.

gem 'rails', '4.2.6'


답변

완전한 초보자로서 나는 이것을하는 방법에 대해 혼란스러워서 시험 점검을하고 마침내 내 서버를 작동 시켰습니다.

작업 디렉토리 파일 ( “work”)에 들어가서 mysql 2가 설치된 앱 ( “sample_app”) 파일에 들어갑니다. gem 파일 ( “Gemfile”)로 이동합니다. gem ‘mysql2’gem으로 편집 ‘mysql2’, ‘~> 0.3.18’

이제 cmd로 돌아가서 “bundle install”명령을 실행하십시오.

괄호 안의 파일을 고려하여 파일을 편집 할 디렉토리는이어야합니다. “c \ work \ sample_app \ Gemfile”

내가 도움이 되었기를 바랍니다.


답변

이것은 일반적으로 컴퓨터에 mysql 패키지가 없을 때 발생합니다. 에서 오류가 발생 gem install mysql2합니까? 어떤 OS를 사용하고 있습니까?

데비안이나 우분투라면 sudo apt-get install libmysqlclient-dev.

또한 gem이 groupGemfile 의 명령문 안에 있지 않아야합니다.