Gem :: LoadError สำหรับ mysql2 gem แต่มีอยู่ใน Gemfile แล้ว


103
Gem::LoadError
Specified 'mysql2' for database adapter, but the gem is not loaded.
Add `gem 'mysql2'` to your Gemfile

ข้อผิดพลาดนี้เกิดขึ้นขณะโหลดไฟล์ต่อไปนี้:

active_record/base

นี่เป็นข้อผิดพลาดที่ฉันได้รับจากการเรียกใช้เซิร์ฟเวอร์ราง

The mysql2 gem has been added to the Gemfile as well.

ฉันทำเสร็จbundle installแล้วและลองรีสตาร์ทเซิร์ฟเวอร์ แต่ยังคงได้รับข้อผิดพลาด


คุณรันbundleหลังจากเพิ่มอัญมณีและรีสตาร์ทเซิร์ฟเวอร์หรือไม่?
Bachan Smruty

@BachanSmruty: ใช่ฉันทำไปแล้ว
Mysoulisinseoul

อยู่ในการปรับใช้หรือไม่ คุณวิ่งหรือยังbundle install --deployment
j-dexx

คำตอบ:


247

หากคุณมีข้อผิดพลาดนี้เมื่ออัปเกรดเป็นราง 4.2.4 (รวมถึงราง 4.1.5) ให้ลองใช้ mysql2 เวอร์ชันนี้:

gem 'mysql2', '~> 0.3.18'

เห็นได้ชัดว่า mysql2 ยังไม่สามารถใช้งานร่วมกับรางรุ่นใหม่กว่าได้เนื่องจากราง 4.2.4 ค่อนข้างใหม่เมื่อฉันตอบคำถามนี้เมื่อวันที่ 8 กันยายน 2558 ดังนั้นให้ใช้บรรทัดด้านบนในไฟล์ Gem ของคุณและเรียกใช้:

bundle install 

คุณควรจะไป


2
ใน msyql2_adapter.rb ฉันพบรหัสด้านล่าง: gem 'mysql2', '~> 0.3.13' ต้องการ 'mysql2' ซึ่งอาจเป็นสาเหตุที่ทำให้ mysql2 เวอร์ชัน 4.xx เริ่มต้นใช้งานไม่ได้
Oscar Jiang

27

มันใช้ได้ผลสำหรับฉันเมื่อฉันระบุเวอร์ชันอัญมณี mysql2 ก่อนเวอร์ชันใหม่ล่าสุด (0.4.0) ด้วยเหตุผลบางประการทำให้เกิดปัญหากับ Rails 4.2.4 และอัญมณี 0.4.0 ดังนั้นเพื่อแก้ปัญหาฉันเพิ่งระบุอัญมณีก่อนหน้านี้: 0.3.20 และมันก็ใช้ได้ดีสำหรับฉัน!

gem 'mysql2', '~> 0.3.20'
bundle install

คุณสามารถตรวจสอบเวอร์ชันอัญมณีทั้งหมดได้ที่นี่: https://rubygems.org/gems/mysql2/versions


16

เปลี่ยนไป

gem 'mysql2', '~> 0.3.18'

ใน Gemfile ของคุณ

เธรดนี้ใน mysql2 Github อย่างเป็นทางการบอกว่าให้ทำสิ่งนี้ คุณต้องประกาศหมายเลขเวอร์ชันนั้นหากคุณเป็นรางเวอร์ชัน 4.xx

https://github.com/brianmario/mysql2/issues/675

bundle update mysql2จากนั้นเรียก


2
ขอบคุณ! เพื่อความแม่นยำคุณไม่ต้องการbundle updateเพราะสิ่งนี้จะอัปเดตอัญมณีทั้งหมดของคุณ คำสั่งคือbundle update mysql2. อาจดูเหมือนชัดเจน แต่เป็นคำสั่งที่ไม่ถูกต้องและอาจมีผลที่ไม่คาดคิด (ในการเปลี่ยนจากbundle updateวิ่งgit checkout -- Gemfile.lock)
นิค

8

ฉันได้รับข้อผิดพลาดเดียวกันหลังจากอัปเกรดเป็น Rails 4.1 และฉันสามารถแก้ไขได้โดยการอัปเดต mysql2 เรียกใช้สิ่งนี้ในโฟลเดอร์แอพ rail ของคุณ:

$ bundle update mysql2

8

ปัญหานี้อาจเกิดขึ้นหากคุณใช้รางรุ่นใหม่กว่า> 4

ทำสองขั้นตอนง่ายๆนี้ก็จะได้ผล เปิด Gemfile ของคุณแล้วค้นหาบรรทัดด้านล่าง

gem 'mysql2'

แทนที่บรรทัดนั้นด้วยเวอร์ชัน mysql เฉพาะดังต่อไปนี้

gem 'mysql2', '~> 0.3.18'

ตอนนี้หยุดเซิร์ฟเวอร์และเรียกใช้บันเดิล

bundle install

ตอนนี้รีสตาร์ทเซิร์ฟเวอร์ของคุณ มันควรจะทำงาน

rails s

7

เป็นผู้เริ่มต้นกับทับทิมฉันไม่สามารถหาอัญมณีเส้น 'mysql2', '~> 0.3.18' ได้

เพียงแค่ไปที่โฟลเดอร์โปรเจ็กต์รางของคุณจากนั้นจะมีบรรทัดสำหรับ mysql2 ซึ่งจะเป็น 0.4 * ดังนั้นคุณสามารถเปลี่ยนเป็น gem 'mysql2', '~> 0.3.18'

และเมื่อเรามีนิยามใหม่เราต้องสร้างการอ้างอิงขึ้นใหม่เพื่อทำคำสั่งง่ายๆตามที่อธิบายไว้ในการติดตั้งบันเดิลด้านบน


5

ไม่โหลดอัญมณี mysql2 เนื่องจากอัญมณี mysql2 (0.4.1) เวอร์ชันใหม่ไม่สามารถโหลด mysql2_adaptor ได้ นี่ใช้งานได้สำหรับฉัน

gem 'mysql2', '~> 0.3.13'

และเรียกใช้

bundle install

2

ฉันมีข้อผิดพลาดเดียวกันและนี่เป็นเพราะ Rails 4.1 ต้องการ mysql2 เวอร์ชัน 0.3.13 ขั้นต่ำและสูงสุดที่เข้ากันได้กับ Windows คือเวอร์ชัน 0.3.11

ฉันจึงแก้ไขไฟล์c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rbและเปลี่ยนบรรทัดgem 'mysql2', '~> 0.3.13'เป็นgem 'mysql2', '~> 0.3.11'และมันก็ใช้งานได้



1

ไม่โหลดอัญมณี mysql2 เนื่องจากอัญมณี mysql2 (> = 0.4.0) เวอร์ชันใหม่ไม่สามารถโหลด mysql2_adaptor ได้ ลองดูไหม

gem 'mysql2', '~> 0.3.13'

หวังว่าน่าจะใช้ได้นะ


0

ฉันแก้ไขปัญหาโดยติดตั้ง mysql2 gem local (gem install mysql2, bundle install) และเพิ่มบรรทัดต่อไปนี้ใน Gemfile:

gem 'mysql2'

การตั้งค่าอะแด็ปเตอร์ mysql2 ใน database.yml

adapter: mysql2

ก็สำคัญเช่นกัน!


0

ฉันกำลังตีตราสินค้าใหม่ให้กับ Ruby on Rails และเว็บไซต์ แต่ได้ยินว่าอะไรที่เหมาะกับฉัน

ฉันต้องเปลี่ยน gemfile ของฉัน gem 'mysql2' เป็น gem 'mysql2', '~> 0.3.13' จากนั้นในรางฉันพิมพ์บันเดิลติดตั้งจากนั้นฉันลองใช้ราง s และมีข้อผิดพลาดดังนั้นฉันจึงลองอัพเดตบันเดิล mysql2 จากนั้นในรางที่พิมพ์ ราง s และมันใช้งานได้


0

ฉันแก้ปัญหาแล้วติดตั้ง libmysqlclient-dev sudo aptitude ติดตั้ง libmysqlclient-dev แล้วรันบันเดิลในภายหลัง


-1

ก่อนหน้านี้ฉันได้ติดตั้ง mysql2 0.4.5 แต่นั่นทำให้ฉันเกิดข้อผิดพลาดดังนั้นฉันจึงติดตั้ง mysql2 เวอร์ชันอื่นโดย:

gem ติดตั้ง mysql2 - รุ่น 0.3.20

หวังว่านี่จะช่วยแก้ปัญหาของคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.