मणि :: LoadError mysql2 मणि ​​के लिए, लेकिन यह पहले से ही 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मणि जोड़ने और सर्वर को पुनरारंभ करने के बाद भाग गए?
बचन स्म्रुत

@BachanSmruty: हाँ मैंने ऐसा किया है।
मैसूरोलिसिनसेल

क्या यह तैनाती में है? क्या आपने भाग लिया हैbundle install --deployment
j-dexx

जवाबों:


247

यदि आपके पास 4.2.4 पर रेलिंग अपग्रेड करते समय भी यह त्रुटि है (4.1.5 रेल के साथ) mysql2 के इस संस्करण का उपयोग करने का प्रयास करें:

gem 'mysql2', '~> 0.3.18'

जाहिरा तौर पर mysql2 रेल के नए संस्करण के साथ अभी भी संगत नहीं है क्योंकि रेल 4.2.4 बहुत नया है क्योंकि मेरे द्वारा इस प्रश्न का उत्तर देने का समय 8 सितंबर 2015 है, इसलिए अपनी रत्न फ़ाइल में उपरोक्त लाइन का उपयोग करें और चलाएं:

bundle install 

आप जाने के लिए तैयार हैं


2
msyql2_adapter.rb में, मुझे नीचे दिए गए कोड मिलते हैं: मणि 'mysql2', '~> 0.3.13' के लिए 'mysql2' की आवश्यकता होती है, यही कारण है कि डिफ़ॉल्ट mysql22 3.xx काम नहीं करेगा
ऑस्कर जियांग

27

मेरे लिए यह तब काम आया जब मैंने नवीनतम (0.4.0) से पहले mysql2 मणि ​​संस्करण निर्दिष्ट किया। किसी कारण से रेल्स 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'

अपने रत्न में।

आधिकारिक 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

मुझे 4.1 के अपग्रेड के बाद एक ही त्रुटि मिली और मैं mysql2 को अपडेट करके इसे हल करने में कामयाब रहा। अपने रेल एप्लिकेशन फ़ोल्डर में इसे चलाएं:

$ bundle update mysql2

8

यदि आप रेल के नए संस्करण> 4 का उपयोग कर रहे हैं तो यह समस्या हो सकती है

इन दो सरल चरणों को करें, यह काम करेगा। अपना जेमफाइल खोलें और नीचे की रेखा ढूंढें

gem 'mysql2'

नीचे की तरह एक विशिष्ट mysql संस्करण के साथ उस लाइन को बदलें

gem 'mysql2', '~> 0.3.18'

अब सर्वर बंद करें और बंडल चलाएं

bundle install

अब अपने सर्वर को रीस्टार्ट करें। यह काम करना चाहिए।

rails s

7

माणिक के लिए शुरुआती होने के कारण मैं लाइन मणि 'mysql2', '~> 0.3.18' का पता नहीं लगा सका।

इसका सीधा सा मतलब है कि आपके रेल प्रोजेक्ट फोल्डर में जाना है और फिर mysql2 के लिए लाइन है। यह 0.4 * की तरह होगा, इसलिए आप इसे 'mysql2', '~> 0.3.18' से बदल सकते हैं

और जैसा कि हमारे पास नई परिभाषा है, हमें निर्भरता का पुनर्निर्माण करना है ताकि शीर्ष बंडल स्थापित करने पर उस सरल कमांड को समझाया जा सके


5

यह mysql2 मणि ​​लोड नहीं करता है क्योंकि mysql2 (0.4.1) मणि का नया संस्करण mysql2_adaptor लोड करने में असमर्थ है। यह मेरे लिए काम कर रहा है।

gem 'mysql2', '~> 0.3.13'

और भाग खड़ा हुआ

bundle install

2

मेरे पास एक ही त्रुटि थी और ऐसा इसलिए है क्योंकि रेल 4.1 को न्यूनतम mysql2 संस्करण 0.3.13 की आवश्यकता है, और विंडोज के साथ अधिकतम संगत संस्करण 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 मणि ​​स्थानीय स्थापित करना (मणि स्थापित mysql2, बंडल स्थापित) और Gemfile के लिए निम्न पंक्ति जोड़ना:

gem 'mysql2'

Database.yml में mysql2 एडप्टर सेट करना

adapter: mysql2

भी महत्वपूर्ण था!


0

मैं रूबी के लिए रेल और वेबसाइटों पर नया ब्रांड बना रहा हूं, लेकिन सुनता है कि मेरे लिए क्या काम किया।

मुझे अपनी मणिफ़ाइल, मणि 'mysql2' को मणि 'mysql2', '~> 0.3.13' में बदलना पड़ा, फिर रेल में मैंने टाइप किया बंडल इंस्टॉल किया, फिर मैंने रेल की कोशिश की और गलतियाँ हुईं, तो फिर मैंने बंडल में mysql2 अपडेट किया, फिर रेल टाइप किए गए रेल एस, और यह काम किया


0

मैंने libmysqlclient-dev को स्थापित करते हुए समस्या का समाधान किया। sudo एप्टीट्यूड libmysqlclient-dev स्थापित करते हैं और बाद में बंडल चलाते हैं।


-1

मैंने पहले mysql2 0.4.5 स्थापित किया है, लेकिन वह मुझे यह त्रुटि दे रहा है इसलिए मैंने mysql2 का एक और संस्करण स्थापित किया है:

मणि स्थापित mysql2 --version 0.3.20

आशा है इससे तुम्हारी समस्या का समाधान हो गया होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.