OSX पर रेल + MySQL: लाइब्रेरी लोड नहीं: libmysqlclient.18.dylib


119

मैं सिर्फ रूबी (और रेल) ​​के साथ शुरुआत कर रहा हूं। मैंने http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby रत्नों के अनुसार सेटअप किया , उपयोग किया rvm। मेरे पास स्केलाइट के साथ सब कुछ अच्छा है।

अब मैं MySQL पर चीजों को परिवर्तित करने की कोशिश करना चाहता हूं, क्योंकि मैं अपने अधिकांश विकास के साथ यही करता हूं। मेरे जेफाइल में मैंने sqlite को mysql2 से बदल दिया है:

group :development, :test do
#  gem 'sqlite3', '1.3.5'
  gem 'mysql2'
  gem 'rspec-rails', '2.9.0'
end

लेकिन जब मैं MySQL में रेल के लिए DB बनाने की कोशिश करता हूँ तो मुझे मिलता है:

$ rake db:create --trace
rake aborted!
dlopen(/Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle

मैंने होमबॉव के माध्यम से MySQL को फिर से स्थापित करने की सिफारिश करते हुए अन्य पोस्टिंग देखी है (मेरा एक डाउनलोड करने योग्य DMG के माध्यम से स्थापित किया गया था), लेकिन मैं ऐसा नहीं करना पसंद करूंगा क्योंकि मेरे पास अन्य गैर-रूबी परियोजनाओं के लिए पहले से ही कई अन्य डेटाबेस हैं।

मैं वास्तव में फ़ाइल है कि रेल के लिए देख रहा है; यह स्थापित है /usr/local/mysql/lib/libmysqlclient.18.dylib। रेल को बताने का सबसे अच्छा तरीका क्या है कि इसका पता कैसे लगाया जाए?


क्या यह इसका एक डुप्लिकेट हो सकता है? stackoverflow.com/questions/4546698/…
gmile

वास्तव में। मैं अपना प्रश्न नहीं हटा सकता / सकती? डुबकी के रूप में बंद करने के लिए वोट दिया गया।
जॉर्ज आर्महोल्ड

जवाबों:


313

समाधान बहुत आसान है; अपनी ~ / .bash_profile या ~ / .profile फ़ाइल में लाइब्रेरी पथ जोड़ें:

MYSQL=/usr/local/mysql/bin
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

अगर यह अभी भी काम नहीं कर रहा है (मेरे लिए यह काम):

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

कई ब्लॉग हैं install_name_tool, जो मेरे लिए काम नहीं करेंगे क्योंकि मैं OSX शेर पर हूं:

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/indexer
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/search

16
सिम्लिंक ने मेरे लिए काम किया (माउंटेन लायन में अपग्रेड करने के बाद)। धन्यवाद!
siannopollo

5
सिम्बलिन ऐसा करता है, खासकर रूबीमाइन के तहत रेल चलाने जैसे मामलों के लिए जहां .bash_profileवास्तव में लागू नहीं होता है।
maksimov

2
मैंने आपके .Yash_LIBRARY_PATH को .bash_profile में जोड़ा, लेकिन मुझे भी 'mysql2' रत्न को अनइंस्टॉल करना पड़ा। जैसे: 'रत्न अनइंस्टॉल mysql2 && gem install mysql2'
ब्रेंडन

73
जो लोग यहां 10.11 के लिए आने के लिए आप को सिमलिंक नहीं कर सकते हैं usr/libअब और लेकिन करने के लिए एक सिमलिंक usr/local/libइच्छा काम:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
JonathanSimmons

2
@JonathanSimmons - आपने अभी-अभी मुझे अपने बाकी बालों को बाहर निकालने से बचाया। मूल सिम्कलिन का जवाब OS X 10.11.5 पर काम नहीं करता है, आप बस "ln: /usr/lib/libmysqlclient.18.dylib: ऑपरेशन की अनुमति नहीं" त्रुटि के साथ समाप्त होते हैं - सब कुछ अभी काम कर रहा है और मैं अंत में अपना काम शुरू कर सकता हूं दिन के लिए काम ... धन्यवाद!
कॉलिन एडम्स

125

एल कैपिटन में मुझे मिला ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

एल कैपिटन में /usr/lib/अब एक प्रतिबंधित झंडा है और सुरक्षा को अक्षम किए बिना नहीं लिखा जा सकता है, इसलिए मैंने /usr/local/libइसके बजाय लिंक डाल दिया ।

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

रेल सर्वर फिर से ठीक चल रहा है।


2
एलेक्स के जवाब की जरूरत नहीं है। एक प्रतीकात्मक लिंक ने चाल चली।
गीताब

मैंने ऐसा किया और मिला: "कनेक्ट ': सॉकेट' /tmp/mysql.sock '(2) (Mysql2 :: त्रुटि) के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता है"
जोश हंटर

1
@JoshHunter मेरा मानना ​​है कि यह एक अलग मुद्दा है। यहाँ एक सूत्र है stackoverflow.com/questions/18449050/… यह भी हो सकता है कि MySQL सर्वर नहीं चल रहा है।
टिनमोंकी

हाँ, सर्वर नहीं चल रहा था ... इसने इसे ठीक कर दिया। sudo /usr/local/mysql/support-files/mysql.server शुरू
जोश हंटर

62

जबकि इस प्रश्न का शीर्षक ठीक मेरे द्वारा बताई गई समस्या का वर्णन करता है, परिस्थितियां पिछले उत्तरों में वर्णित उन लोगों से अलग हैं, और इसलिए समाधान था।

मेरे मामले में (एल कैपिटान, होमब्रे के माध्यम से स्थापित mysql), ए brew update && brew upgrade जिसके कारण mysql पैकेज को 5.7.10 (5.6.x से) में अपग्रेड किया जा सकता है।

अपग्रेड libmysqlclient.18.dylibको प्रतिस्थापित किया जाना चाहिए libmysqlclient.20.dylib, लेकिनmysql2 गया था मणि अभी भी पूर्व पर निर्भर था।

मेरे द्वारा की गई समस्या को ठीक करने के लिए: gem uninstall mysql2 && gem install mysql2

कृपया ध्यान दें कि विभिन्न होमब्रेव-प्रबंधित पुस्तकालयों के साथ समान समस्याएं हो सकती हैं ( उदाहरण के लिए मेरा खुद का उत्तर देखें )


महान ! मैंने अपने mysql को 5.7 में अपग्रेड किया ... इस मुद्दे का सामना किया ..... चरण 1 का पालन किया। रत्न की स्थापना mysql2> चयनित विकल्प 3 2. रत्न स्थापित mysql2 3. इस परियोजना के gemfile में जोड़ा ---> मणि 'mysql2' , '~> 0.3.21' 4. बंडल स्थापित
उदित कपाही

10
मैं हर किसी को पहले यह कोशिश करने की सलाह देता हूं! यदि यह काम करता है तो आप किसी भी अन्य वर्कअराउंड के साथ अपने सिस्टम को जंक करने से बच सकते हैं। कभी-कभी आपको जादुई सिम्बलिंक्स आदि पर निर्भर रहना पड़ता है, लेकिन यह आपके सिस्टम को अधिक से अधिक भंगुर बनाता है। (यदि यह काम नहीं करता है, तो कोई नुकसान नहीं हुआ है और इसे पूर्ववत करने के लिए कुछ भी नहीं है।)
टॉम विल्सन

मेरे लिए भी काम किया। समस्या यह थी कि मुझे आधिकारिक इंस्टॉलर में mysql w / homebrew स्थापित करने से स्थानांतरित किया गया था।
xetetics

1
किसी भी अजगर उपयोगकर्ताओं के लिए यहाँ हो रहा है, pip uninstall mysqlclientऔर pip install mysqlclientयह भी काम किया।
पीटर डोलन

26
sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

मेरे लिए यही काम किया। मैंने एक dmg फ़ाइल से MySQL स्थापित किया है।


यह मैक ओएस एक्स पर काम किया - मेरे लिए Yosemite MySQL के साथ dmg फ़ाइल से इंस्टॉल किया गया। धन्यवाद यूसुफ।
आरएसएल १०

4
ऑपरेशन की अनुमति नहीं है (जाहिर है सूडो के साथ) मेरा एसओ संस्करण एल कैपिटान है
इग्नासियो चियाज़ो

16
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

मेरे लिए काम किया। सभी समान नहीं थे।


यह रूबीमाइन का समाधान है।
जस्टिन

13

मैं एक पूर्ण निष्कासन और फिर MySQL की ताज़ा स्थापना के बाद इस समस्या में भाग गया। विशेष रूप से:

Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib

मैंने अपना रेल एप्लिकेशन भी नहीं छुआ था।

mysql2मणि को पुनः स्थापित करने से यह समस्या हल हो गई।

$ gem uninstall mysql2
$ gem install mysql2 -v 0.3.18 # (specifying the version found in my Gemfile.lock)

[MySQL 5.7.10, रेल 4.0.0, रूबी 2.0.0, मैक ओएस एक्स योसेमाइट 10.10]


9

यदि आप El Capitan में HomeBrew से स्थापित MySQL का उपयोग कर रहे हैं, तो आपको इसे निम्नानुसार लिंक करना चाहिए:

sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

6

MySql के लिए 5.6 Mavericks पर DMG से स्थापित किया गया है

sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

4

मैं अभिषेक से पैच की पुष्टि करता हूं काम की ।

यह योसेमाइट के लिए भी काम करता है।

ध्यान दें: mysql के किसी विशेष संस्करण से लिंक करने के बजाय, इस तथ्य का उपयोग करें कि mysql पहले से ही बनाया हुआ सिमलिंक है:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

यह समाधान Xcode और C API के लिए काम करता है।


3

उन लोगों के लिए जो काढ़ा का उपयोग कर रहे हैं। बस आपको "--फोर्स" विकल्प के साथ mysql संस्करण लिंक करें।

brew link mysql56 --force

यह लाइब्रेरी फ़ाइल को लिंक करने का तरीका है ... ln -s विकल्प का उपयोग करने के बजाय। अद्यतन संस्करण के लिए काढ़ा लिंक mysql@5.7 --फोर्स का उपयोग करें
वाहिद केसरी

धन्यवाद। मैंने किया brew link mysql@5.7 --force। पूरी तरह से काम किया।
ऐ सोम चित

2

यह सुनिश्चित करने के लिए कि सिमिलर की आवश्यकता क्या है (mysql संस्करण और ओएस संस्करण पर निर्भर करें):

$ locate libmysqlclient.18.dylib
/usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib

इसलिए :

ln -s /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

2

यह मेरे लिए काम करता है:

ln -s /usr/local/Cellar/mysql/5.6.22/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

मेरे लिए एक बदलाव होने का ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
अंत

1

मैं एक विरासत प्रणाली के लिए रेल आरईई (2.3.4) का उपयोग कर रहा हूं। El Capitan में अपग्रेड करने के बाद, स्क्रिप्टिंग / कंसोल चलाने से एक त्रुटि हुई और मेरा ऐप अब शुरू नहीं होगा (पॉव का उपयोग करके):

$ script/console
Loading development environment (Rails 2.3.4)
/blah-blah/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in establish_connection:RuntimeError: Please install the mysql2 adapter: gem install activerecord-mysql2-adapter (dlopen(/blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle
  Reason: image not found - /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle)


इस बहुत धागे से, ऊपर, मैंने निर्धारित किया कि मुझे टर्मिनल में इस कमांड को जारी करने की आवश्यकता है:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
इस कमांड ने एक त्रुटि उत्पन्न की: "ln: /usr/lib/libmysqlclient.18.dylib: ऑपरेशन की अनुमति नहीं है"। मैंने उस त्रुटि को पहले कभी नहीं देखा है।

काफी खुदाई के बाद, मुझे यह लेख मिला: http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html और इसके बाद SIP (El Capitan का नया सिस्टम इंटीग्रिटी प्रोटेक्शन) बंद करने के निर्देश। एसआईपी को बंद करने के बाद, और रिबूट करने के बाद, ln कमांड ने ठीक काम किया। फिर मैंने एसआईपी बंद कर दिया। अब सब ठीक है। मेरा ऐप पॉव का उपयोग करके फिर से चलता है और स्क्रिप्ट / कंसोल को चलाने में कोई त्रुटि नहीं है। मैं आशान्वित हूं कि इससे आपको सहायता मिलेगी।


1

मैक सिएरा पर अगर Homebrew का उपयोग करते हैं तो करें:

sudo ln -s /usr/local/Cellar/mysql@5.6/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib


1

इसने मेरे लिए काम किया। मुझे बस इतना करना था कि mysql2 मणि ​​को अनइंस्टॉल कर दिया जाए और नीचे दिए गए कमांड्स का उपयोग करके इसे फिर से स्थापित किया जाए

gem uninstall mysql2
gem install mysql2 -v '0.3.18' -- --with-mysql-config=/usr/local/Cellar/mysql@5.7/5.7.28/bin/mysql_config

1

मैं Mac OS का उपयोग कर रहा हूं, और सभी mysql और MAMP को अनइंस्टॉल / हटाने के बाद भी मैं इस बग के साथ अटका हुआ था। इससे पहले, मैंने स्थापित किया brew install mysqlऔर उपयोग भी किया MAMP। सॉफ्टलिंक जोड़ना मेरे लिए काम नहीं आया।

यह केवल सभी मौजूदा mysql को हटाकर हल किया गया था। और फिर यहां से MySQL के माध्यम से mysql इंस्टॉल करें


0

अपनी कमांड लाइन से इसका उपयोग करें:

sudo install_name_tool -id /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib

Maverick वाले कुछ कंप्यूटरों पर हमेशा काम किया जाता है


0

यदि आप Bitnami RubyStack का उपयोग कर रहे हैं और इसी तरह की समस्या में भाग रहे हैं। इसको आजमाओ

sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

0

उस बंडल फ़ाइल को लोड करने के साथ मेरा मुद्दा एक बुरा सिम्लिंक था। इसलिए लिंक की जांच करें, और यदि आवश्यक हो तो इसे एक नए सिरे से बदलें। सब कुछ उस बिंदु पर जगह में गिर गया। यकीन नहीं होता कि कैसे हुआ, लेकिन यह किया। पहली बार जब एक वाक्य रचना त्रुटि हुई।


0

मैं रेल जी मॉडल कमांड के साथ काम कर रहा था और मुझे यह त्रुटि मिली:

Library not loaded: libmysqlclient.18.dylib

मैंने यह कोशिश की है और यह मेरे लिए काम करता है। मैं 10.9.5 Mavericks का उपयोग कर रहा था

sudo ln -s /usr/local/mysql-5.6.19-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

धन्यवाद!

अब मैं Yosemite 10.10.5 का उपयोग कर रहा हूं और मुझे एक ही त्रुटि मिली, इसलिए मैंने टर्मिनल पर इस कमांड को चलाया, यह सफलतापूर्वक तय किया गया था।

$ sudo ln -s /usr/local/mysql-5.6.26-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

आप भी आज़मा सकते हैं:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

दोनों मेरे लिए ठीक काम करते हैं। आशा है कि यह उपयोगी हो सकता है!


0

मुझे यह मुद्दा "लाइब्रेरी लोडेड नहीं: libmysqlclient.18.dylib" मिला जब MySQLdb को MySQL से python3 के लिए आयात किया गया :

    Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import MySQLdb
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so
  Reason: image not found

मेरे लिए समाधान काम करता है: मैक ओएस एक्स 10.11.1 पायथन 3.5

Edit ~/.bash_profile:
export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin:$PATH"
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
export PATH="/usr/local/mysql/bin:$PATH"
export PATH="/usr/local/mysql/lib:$PATH"
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

@MSU_Bulog बेशक यह सवाल का जवाब देता है। यह नई जानकारी भी प्रदान करता है। सिर्फ इसलिए कि एक उत्तर में त्रुटि शामिल है जो उन्हें यहां लाती है इसका मतलब यह नहीं है कि वे जो समाधान प्रदान करते हैं वह बिना मूल्य के है।
आर्टजोम बी।

0

केवल एक चीज जो मेरे लिए काम करती है:

sudo install_name_tool -change libmysqlclient.18.dylib \
/usr/local/mysql-5.6.23-osx10.8-x86_64/lib/libmysqlclient.18.dylib \
/Library/Ruby/Gems/2.0.0/gems/mysql2-0.4.3/lib/mysql2/mysql2.bundle

अपने सिस्टम को फिट करने के लिए mysql और जवाहरात के रास्तों को बदलें।


0

बहुत सारे गुगली करने के बाद और ऊपर सभी की कोशिश करने के बाद ... मेरी समस्या का हल केवल यही था:

$install_name_tool -id /usr/local/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

मैं एक मैकबुक का उपयोग कर रहा हूँ Pro, OSX 10 El Capitan। डार्विन xxxx-MacBook-Pro.local 15.6.0 डार्विन कर्नेल संस्करण 15.6.0: Thu Jun 23 18:25:34 PDT 2016; XXX: xnu-3248.60.10 ~ 1 / RELEASE_X86_64 x86_64 पर्ल: v5.18.2 Mysql: 5.6.19


0

धन्यवाद। एक Homebrew अपग्रेड ने मेरे Rails ऐप्स को मेरे Mac पर समस्याएँ दीं। मैंने स्रोत से MySQL (5.7) को फिर से स्थापित किया, फिर मुझे यह करना पड़ा

sudo ln -s /usr/local/mysql-5.7.28-macos10.14-x86_64/lib/libmysqlclient.20.dylib /usr/lib/libmysqlclient.20bdylib

ऊपर मैंने जो पढ़ा, उसके आधार पर और अपने जेमफाइल में

gem 'mysql2', '0.5.3'

और database.yml में

adapter: mysql2

0

इस सवाल का बहुत पहले से ही जवाब हैं, खासकर यह एक https://stackoverflow.com/a/10847618/5515861 । मैं केवल कुछ नोट्स जोड़ना चाहता हूं। यदि आप लोग Mac का उपयोग करते हैं, तो मुझे नहीं पता कि आप MySQL कैसे स्थापित करते हैं, लेकिन जांच करने के लिए पहली बात यह है कि आपका MySQL इंस्टॉलेशन कहाँ स्थित है। मेरे लिए, MySQL brewसंस्करण के लिए उपयोग कर स्थापित किया गया है 5.7, और स्थान है /usr/local/opt/mysql@5.7/, इसलिए मेरे लिए निम्न जोड़ें ~/.zshrc

MYSQL=/usr/local/opt/mysql@5.7/bin/
MYSQL_LIB=/usr/local/opt/mysql@5.7/lib/
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=$MYSQL_LIB:$DYLD_LIBRARY_PATH

आशा है कि आप अपने मुद्दों को ठीक करेंगे 😁

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