Gem :: LoadError cho đá quý mysql2, nhưng nó đã có trong Gemfile


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

Lỗi này xảy ra khi tải các tệp sau:

active_record/base

Đây là lỗi tôi gặp phải khi chạy máy chủ rails.

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

Tôi đã thực hiện xong bundle installvà thử khởi động lại máy chủ nhưng vẫn gặp lỗi.


Bạn có chạy bundlesau khi thêm đá quý và khởi động lại máy chủ không?
Bachan Smruty

@BachanSmruty: Vâng, tôi đã làm được điều đó.
Mysoulisinseoul

Điều này có đang được triển khai không? Bạn đã chạy chưabundle install --deployment
j-dexx

Câu trả lời:


247

Nếu bạn gặp lỗi này khi nâng cấp lên rails 4.2.4 (cũng với rails 4.1.5), hãy thử sử dụng phiên bản này của mysql2:

gem 'mysql2', '~> 0.3.18'

Rõ ràng mysql2 vẫn chưa tương thích với phiên bản mới hơn của rails vì rails 4.2.4 khá mới vào thời điểm tôi trả lời câu hỏi này vào ngày 8 tháng 9 năm 2015, vì vậy hãy sử dụng dòng trên trong tệp Gem của bạn và chạy:

bundle install 

Bạn sẽ được tốt để đi


2
trong msyql2_adapter.rb, tôi tìm thấy các mã bên dưới: gem 'mysql2', '~> 0.3.13' request 'mysql2', đây có thể là lý do tại sao mysql2 phiên bản 4.xx mặc định sẽ không hoạt động
Oscar Jiang

27

Nó hoạt động với tôi khi tôi chỉ định phiên bản đá quý mysql2 trước phiên bản mới nhất (0.4.0). Vì lý do nào đó, có sự cố với Rails 4.2.4 và gem 0.4.0 đó. Vì vậy, để giải quyết vấn đề, tôi chỉ xác định viên ngọc trước đó được phát hành: 0.3.20 và nó hoạt động tốt đối với tôi!

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

Bạn có thể kiểm tra tất cả các phiên bản đá quý tại đây: https://rubygems.org/gems/mysql2/versions


16

Thay đổi thành

gem 'mysql2', '~> 0.3.18'

trong Gemfile của bạn.

Chủ đề này trên Github mysql2 chính thức cho biết làm điều này. Bạn cần khai báo số phiên bản đó nếu bạn đang chạy phiên bản 4.xx

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

Sau đó chạy bundle update mysql2.


2
Cảm ơn bạn! Nói một cách chính xác, bạn không muốn bundle updatevì điều này sẽ cập nhật tất cả các viên ngọc của bạn. Lệnh là bundle update mysql2. Có thể có vẻ hiển nhiên, nhưng đó là lệnh sai và có thể gây ra hậu quả không mong muốn. (Để trở lại từ bundle update, chạy git checkout -- Gemfile.lock)
Nick

8

Tôi gặp lỗi tương tự sau khi nâng cấp lên Rails 4.1 và tôi đã giải quyết được bằng cách cập nhật mysql2. Chạy cái này trong thư mục ứng dụng rails của bạn:

$ bundle update mysql2

8

Sự cố này có thể xảy ra nếu bạn đang sử dụng phiên bản mới hơn của rails> 4

Thực hiện hai bước đơn giản này, nó sẽ hoạt động. Mở Gemfile của bạn và tìm dòng bên dưới

gem 'mysql2'

thay thế dòng đó bằng một phiên bản mysql cụ thể như bên dưới

gem 'mysql2', '~> 0.3.18'

Bây giờ dừng máy chủ và chạy gói

bundle install

Bây giờ khởi động lại máy chủ của bạn. Nó sẽ hoạt động.

rails s

7

Là người mới bắt đầu sử dụng ruby, tôi không thể tìm ra viên ngọc dòng 'mysql2', '~> 0.3.18'

nó chỉ đơn giản có nghĩa là đi đến thư mục dự án rails của bạn và sau đó có dòng cho mysql2, nó sẽ giống như 0.4 * vì vậy bạn có thể thay đổi nó thành gem 'mysql2', '~> 0.3.18'

và khi chúng ta có định nghĩa mới, chúng ta phải xây dựng lại phần phụ thuộc để thực hiện lệnh đơn giản đó như đã giải thích ở phần cài đặt gói trên cùng


5

Nó không tải đá quý mysql2 vì phiên bản mới của đá quý mysql2 (0.4.1) không thể tải đá quý mysql2_adaptor. Điều này đang làm việc cho tôi.

gem 'mysql2', '~> 0.3.13'

và chạy

bundle install

2

Tôi đã gặp lỗi tương tự và điều này là do Rails 4.1 yêu cầu phiên bản mysql2 tối thiểu 0.3.13 và tương thích tối đa với Windows là phiên bản 0.3.11.

Vì vậy, tôi đã chỉnh sửa tệp c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rbvà thay đổi dòng gem 'mysql2', '~> 0.3.13'thành gem 'mysql2', '~> 0.3.11', và nó hoạt động cho đến nay.



1

Nó không tải đá quý mysql2 vì phiên bản mới của đá quý mysql2 (> = 0.4.0) không thể tải đá quý mysql2_adaptor. Bạn có thể thử cái này không?

gem 'mysql2', '~> 0.3.13'

Hy vọng rằng, nó sẽ hoạt động.


0

Tôi đã giải quyết vấn đề, cài đặt cục bộ gem mysql2 (gem install mysql2, gói cài đặt) và thêm dòng sau vào Gemfile:

gem 'mysql2'

Đặt bộ điều hợp mysql2 trong database.yml

adapter: mysql2

cũng quan trọng!


0

Tôi là thương hiệu mới đối với Ruby on Rails và các trang web nhưng tôi đã nghe thấy những gì hiệu quả với tôi.

Tôi đã phải thay đổi gemfile của mình, gem 'mysql2' thành gem 'mysql2', '~> 0.3.13' sau đó trong rails tôi đã nhập gói cài đặt sau đó tôi đã thử rails s và bị lỗi vì vậy sau đó tôi đã thử cập nhật gói mysql2 sau đó trong rails đã gõ rails s, và nó đã hoạt động


0

Tôi đã giải quyết sự cố, cài đặt libmysqlclient-dev. sudo aptitude cài đặt libmysqlclient-dev và chạy gói sau đó.


-1

Trước đây tôi đã cài đặt mysql2 0.4.5 nhưng điều đó khiến tôi gặp lỗi này vì vậy tôi đã cài đặt phiên bản khác của mysql2 bằng cách:

gem cài đặt mysql2 - phiên bản 0.3.20

Hy vọng điều này sẽ giải quyết vấn đề của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.