रेल 4 - मणि :: लोडर्रर: डेटाबेस एडॉप्टर के लिए निर्दिष्ट 'mysql2', लेकिन मणि लोड नहीं है


150

मेरे रत्न में मेरे पास है:

gem 'mysql2'

मेरा डेटाबेस इस प्रकार है:

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 updateऔर bundle 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और का बुरा संस्करण नहीं था, मैंने किया bundle installऔर bundle updateफिर से और फिर जब मैं दौड़ता gem listहूं तो मैं देखता हूं mysql2 (0.4.0)और कोई अन्य संस्करण नहीं।

किसी भी विचार सबसे सराहना की जाएगी।


उपाय

वर्तमान में यह बग 4.1.x और 4.2.x के साथ एक समस्या है, इस बग रिपोर्ट के अनुसार , यह रेल की अगली रिलीज में 4.2.x (लिंक के लिए टिप्पणियों में डीसीआर करने का श्रेय) तय किया जाएगा।

माध्य समय में आप mysql2 के संस्करण 0.3.18 को डाउनग्रेड कर अपनी लाइन को अपने अल्फ़ाज़ में जोड़कर ठीक कर सकते हैं:

gem 'mysql2', '~> 0.3.18'

1
कोशिश करेंbundle update mysql2
पावन

मैंने भी यही कोशिश की है। काम नहीं किया। जो मैं देख रहा हूं mysql2 (0.4.0)वह सबसे नया संस्करण रूबी रत्न लेगा और यह पहले से स्थापित है।
newUserNameHere

12
यहाँ समाधान था: gem 'mysql2', '~> 0.3.18'जेमफाइल में।
newUserNameHere

6
यह mysql2 के साथ बग नहीं है, यह ActiveRecord एडाप्टर में आवश्यकता के साथ एक समस्या है: github.com/rails/rails/issues/21544 । यह रेल मास्टर में तय किया गया है: github.com/rails/rails/commit/…
dcorr

@ पावन ऐवसम महन !! _ / _
वरुण

जवाबों:


50

बस एक और अद्यतन - प्रश्न में समाधान सही है।

4 वीं टिप्पणी ध्यान देने योग्य है:

यह mysql2 के साथ बग नहीं है, यह ActiveRecord एडेप्टर में आवश्यकता के साथ एक समस्या है: 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'

यदि गति एक प्राथमिकता है, तो यह to ४.२.४ ’से शाखा तक to ४.२.४’ को पिन करने के बजाय mysql2 को a 0.3.20 ’तक उछालने के लिए थोड़ा तेज था:, 4-2-स्थिर’।
सीनियोरदान ०

यह विश्वास करना कठिन है कि mysql मणि में इतनी कंजूस छोटी-छोटी समस्याएं हैं जिनकी तुलना postgreSQL T__T से होती है
newBike

यह विंडोज वातावरण है - यह इमेजमैजिक आदि के साथ समान है। आपको बाहरी निर्भरता का उपयोग करना होगा, और चूंकि विंडोज में उनके लिए केंद्रीय रेपो नहीं है, इसलिए यह मुश्किल हो जाता है
रिचर्ड पेक

5 पटरियों के बारे में क्या?
रिचर्ड पेक


67

बस करो:

gem 'mysql2', '~> 0.3.18' इस मणि के साथ काम करता है rails version 4.x.x

यदि gem 'mysql2', '~> 0.4.0'यह स्थापित होता है तो यह रत्न लोड त्रुटि पैदा करता है और संगतता समस्याओं का कारण बनता है


स्वच्छ, सरल और संक्षिप्त। धन्यवाद!
1333 में Am33d

मेरे लिए काम किया @kaleem
khalidh

9

इस मुद्दे को यहां संबोधित किया गया था: https://github.com/brianmario/mysql2/issues/950

रेल 4.x के लिए कृपया 0.5.x अपग्रेड से बचने के लिए mysql2 '~> 0.4.0' पर मणि पिन करें।

Gemfile:

gem 'rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'

फिर भागो bundle update rails mysql2

मैं वर्तमान में mysql v 8.0.11 का उपयोग कर रहा हूं


8

जब यह पोस्ट किया गया था और इसके उपयोग किए जा रहे रेल के संस्करण के सापेक्ष इस विशेष प्रश्न का उत्तर यह है कि समस्या bundle update0.4.x करने के लिए आपके और mysql2 संस्करण अपडेट करने से होती है जिसमें नवीनतम रेल एक्टिवकार्ड के साथ असंगति का मुद्दा है।

फिर से, कृपया ध्यान दें कि यह रेल / ActiveRecord के पुराने संस्करणों का उपयोग करने वाले लोगों के लिए समाधान नहीं है।

त्वरित समाधान केवल mysql2आपके मणिभ में संस्करण को इस प्रकार निर्दिष्ट करना है:

gem 'mysql2', '0.3.20'

लंबे समाधान के लिए या तो ActiveRecord के अपडेट का इंतजार करना होगा या mysql2 में कुछ बदलना होगा।


7

यदि आप अपने रेल संस्करण को अपग्रेड करने में सक्षम हैं, तो अपने जेमफाइल को इसमें बदलें और यह mysql2 मणि ​​संस्करण को अपग्रेड किए बिना समस्या को हल करेगा:

gem 'rails', '4.2.6'

5

एक पूर्ण शुरुआत के रूप में मैं इस बात पर भ्रमित हो गया कि यह कैसे करना है इसलिए मैंने अभी एक परीक्षण किया और अंत में अपने सर्वर को काम कर रहा हूं, यहां बताया गया है कि मैंने इसे कैसे काम किया।

वर्किंग डायरेक्टरी ("काम") की फाइल में जाओ और वहाँ से आपके द्वारा बनाए गए ऐप ("नमूना_एप्प") की फ़ाइल में मिलें, जिसमें mysql 2 स्थापित है मणि फ़ाइल ("Gemfile") पर जाएं मणि 'mysql2' को मणि पर संपादित करें 'mysql2', '~> 0.3.18'

अब cmd पर वापस जाएं और कमांड "बंडल इंस्टॉल" चलाएं।

इसलिए कोष्ठक में उपरोक्त फाइलों पर विचार करते हुए फाइल को संपादित करने की निर्देशिका होनी चाहिए। "ग \ काम \ sample_app \ Gemfile"

आशा है कि मैं कुछ मदद की थी।


4

यह आमतौर पर तब होता है जब आप अपनी मशीन पर कुछ mysql संकुल याद कर रहे होते हैं। क्या आपको कोई त्रुटि मिलती है?gem install mysql2 ? आप किस ओएस पर काम कर रहे हैं?

अगर डेबियन या ubuntu पर प्रयास करें sudo apt-get install libmysqlclient-dev

यह भी सुनिश्चित करें कि रत्न groupआपके जेमफाइल में एक स्टेटमेंट के अंदर नहीं है ।


सहायता के लिए +1। हालाँकि, मेरे पास पहले से ही libmysqlclient-dev है, और मणि एक ग्रुप स्टेटमेंट के अंदर नहीं है। क्या अजीब है कि यह मेरी अन्य परियोजनाओं पर ठीक काम करता है, बस यह एक नहीं है। इसके अलावा यह मेरे ओएस की एक नई स्थापना नहीं है मैंने कुछ समय के लिए अपने वातावरण में कुछ भी नहीं बदला है। और स्टेजिंग सर्वर के बारे में भी यही बात है, जहाँ मुझे वही समस्याएं दिखाई दे रही हैं।
newUserNameHere

1

एक ही मुद्दा था, लेकिन जोड़ना source 'https://rubygems.org' मणि फ़ाइल हल मुद्दे के शीर्ष ।

कदम:

source 'https://rubygems.org'अपनी मणि फ़ाइल में जोड़ें । टिप्पणी करें mysql2 gemऔर gem 'mysql2', '~> 0.3.18' रन जोड़ेंbundle install


0

इसे इस्तेमाल करे:

bundle update mysql2

यह कमांड आपके 'mysql2' रत्न को नवीनतम संस्करण में अपडेट करेगा (0.3.17 या अधिक होना चाहिए) और आपके रेल सर्वर को शुरू करेगा।

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