Programing

Rails 4-Gem :: LoadError : 데이터베이스 어댑터에 대해 'mysql2'를 지정했지만 gem이로드되지 않았습니다

crosscheck 2020. 6. 10. 08:21
반응형

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로드 오류가 발생하고 호환성 문제가 발생합니다


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

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

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

gem 'mysql2', '0.3.20'

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


이 문제는 여기에서 해결되었습니다 : 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을 사용하고 있습니다.


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

gem 'rails', '4.2.6'

As a complete beginner i got confused on how to do this so I just did a trial check and finally got my server working , here is how i got it working .

get into the file of working directory("work") and from there get into the file of the app you created("sample_app")which has mysql 2 installed go to gem file ("Gemfile")edit gem 'mysql2' to gem 'mysql2', '~> 0.3.18'

now go back to cmd and run command "bundle install".

so the directory to edit file taking consideration of above files in brackets should be . "c\work\sample_app\Gemfile"

hope i was of some help .


This usually happens when you are missing some mysql packages on your machine. Do you get any errors from gem install mysql2? What OS are you working on?

If on debian or ubuntu try sudo apt-get install libmysqlclient-dev.

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


같은 문제가 있었지만 추가 source 'https://rubygems.org' to the top of gem file solved issue.

단계 :

source 'https://rubygems.org'gem 파일에 추가 하십시오. 주석 처리 mysql2 gem및 추가 gem 'mysql2', '~> 0.3.18'실행bundle install


이 시도:

bundle update mysql2

이 명령은 'mysql2'gem을 최신 버전 (0.3.17 이상)으로 업데이트하고 Rails 서버를 시작합니다.

참고 URL : https://stackoverflow.com/questions/32457657/rails-4-gemloaderror-specified-mysql2-for-database-adapter-but-the-gem-i

반응형