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


150

내 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'

1
시도bundle update mysql2
Pavan

나는 그것을 시도했다. 작동하지 않았다. 내가 보는 것에서 mysql2 (0.4.0)루비 보석이 취할 최신 버전이며 이미 설치되어 있습니다.
newUserName 여기

12
해결책 gem 'mysql2', '~> 0.3.18'은 Gemfile에 있습니다.
newUserName 여기

6
이것은는 액티브 어댑터의 요구 사항에 문제가있어, mysql2 버그되지 않습니다 : github.com/rails/rails/issues/21544 . 이것은 레일 마스터에서 수정되었습니다 : github.com/rails/rails/commit/…
dcorr

@Pavan Awsome maahn !! _ / _
Varun

답변:


50

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

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

이 그것이 액티브 어댑터의 요구 사항에 문제가있어, 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'

속도가 우선이라면, 레일 '4.2.4'를 분기에 '4-2-stable'로 고정하는 대신 mysql2를 '0.3.20'으로 낮추는 것이 조금 더 빠릅니다.
seanriordan081

mysql gem은 postgreSQL T__T와 비교할 때 너무 많은 버그가 있다고 생각하기 어렵습니다.
newBike

그것은 Windows 환경입니다-Imagemagick 등과 동일합니다. 외부 의존성을 사용해야하며, Windows에는 중앙 저장소가 없으므로 까다로워집니다
Richard Peck

Rails 5는 어떻습니까?
Richard Peck

@RichardPeck 나는 레일 5.0.3이 문제가
garci560

67

그냥 해:

gem 'mysql2', '~> 0.3.18' 이 보석은 작동합니다 rails version 4.x.x

설치 gem 'mysql2', '~> 0.4.0'하면 gem로드 오류가 발생하고 호환성 문제가 발생합니다


깨끗하고 간단하며 간결합니다. 감사!
Am33d

@kaleem
khalidh

9

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


8

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

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

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

gem 'mysql2', '0.3.20'

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


7

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

gem 'rails', '4.2.6'

5

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

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

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

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

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


4

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

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

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


어시스트 +1 그러나 libmysqlclient-dev가 이미 있고 gem이 그룹 명령문에 없습니다. 이상한 점은 이것이 내 프로젝트가 아니라 다른 프로젝트에서 잘 작동한다는 것입니다. 또한 이것은 내 OS의 새로운 설치가 아닙니다. 한동안 환경에서 아무것도 변경하지 않았습니다. 그리고 스테이징 서버에서도 마찬가지입니다. 여기서 동일한 문제가 발생합니다.
newUserName 여기

1

같은 문제가 있었지만 추가 source 'https://rubygems.org' gem 파일의 맨 위에 하면 문제가 해결되었습니다.

단계 :

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


0

이 시도:

bundle update mysql2

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.