लाइब्रेरी लोड नहीं: libmysqlclient.16.dylib त्रुटि जब ओएस एक्स 10.6 पर mysql2 मणि ​​के साथ 'रेल सर्वर' चलाने की कोशिश कर रहा है


206

मैं कुछ समय से इससे जूझ रहा हूं।

मैंने अपने स्नो लेपर्ड मशीन पर रेल 3, मणि, mysql स्थापित किया है। जब तक मैंने अपना पहला प्रोजेक्ट नहीं बनाया, तब तक सब ठीक चल रहा था

rails server

इसे चलाने पर मुझे मिलता है:

jontybrook$ rails server
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
  Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
    from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require'
    from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27
    from script/rails:6:in `require'
    from script/rails:6
jontybrook$ 

जहाँ तक मैं बता सकता हूँ समस्या mysql2 रत्न के साथ है। MySQL ठीक चल रहा है और मेरे Gemfile संदर्भ mysql2, मेरे database.yml फ़ाइल भी ठीक लगता है।

त्रुटि का उल्लेख है

Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

और फिर भी

jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2
jontybrook$ ls
client.rb   em.rb       error.rb      mysql2.bundle result.rb

MySQL2.bundle है !?

अगर मैं पुराने mysql रत्न, WEBrick बूट का उपयोग ठीक करता हूँ। लेकिन यह आदर्श नहीं है, क्या यह है?

मैंने कोशिश की है सब कुछ मुझे दे सकता है! किसी भी मदद की बहुत सराहना की।

जवाबों:


393

मेरे लिए काम करने के लिए मुझे इनमें से कोई भी जवाब नहीं मिला, लेकिन यही वह आदेश है जो मैं अपने काम के लिए इस्तेमाल करता था। इस तरह आपको हर बार अपने mysql को अपडेट करने के लिए install_name_tool का उपयोग करने की आवश्यकता नहीं है

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

11
यह उस समस्या को हल करने का सबसे सरल और सही तरीका है।
वोल्डी

2
इसके लिए धन्यवाद। उपर्युक्त उत्तर केवल एक साइट के लिए काम करता है, लेकिन यह स्थायी रूप से काम करता है। इसके मो 'बेट्टा।
fregas

12
उन लोगों के लिए जो उत्सुक हैं कि क्या चल रहा है, यह कमांड दूसरे स्थान से पहले तक एक प्रतीकात्मक लिंक बनाता है। जब रत्न MySQL क्लाइंट लाइब्रेरी के तहत दिखता है /usr/lib, तो यह लिंक उस स्थान पर हल हो जाएगा जहां यह वास्तव में स्थापित है। OS X पर, यह आमतौर पर /usr/local/mysql/libहोता है, जहां यह कमांड लिंक होता है। यदि आपका परिवाद किसी भिन्न स्थान पर स्थापित है, तो आपको इस आदेश को मोड़ना होगा। locate libmysqlclient.18.dylibपहले तर्क के बाद परिणाम टाइप और स्थानापन्न करें -s
साओबन

1
@ सीन डी, जब मैं libmysqlclient.18 का पता लगाता हूं, तो WARNING: The locate database (/var/db/locate.database) does not exist. To create the database, run the following command: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist Please be aware that the database can take some time to generate; once the database has been created, this message will no longer appear.क्या मुझे यह आउटपुट मिलता है कि क्या गलत है?
गिह

1
@GiH आपको केवल वह कमांड चलाने की आवश्यकता है जो आपको बताती है ( sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist)। यह आपकी हार्ड ड्राइव को अनुक्रमित करने की प्रक्रिया शुरू करेगा, जो locateभविष्य में कमांड का काम करेगा । ज्यादातर मामलों में, हालांकि, मुझे लगता है कि आपको ऐसा करने की आवश्यकता नहीं होगी, और केवल कमांड का उपयोग कर सकते हैं जो कि luvlss के रूप में प्रदान किया गया है।
सियोभन

93

मैंने इसे हल कर लिया है, आखिरकार!

मैंने आरवीएम के तहत रूबी और रेल को फिर से स्थापित किया। मैं रूबी संस्करण 1.9.2-p136 का उपयोग कर रहा हूं।

आरवीएम के तहत फिर से स्थापित करने के बाद, यह त्रुटि अभी भी मौजूद थी।

अंत में मैजिक कमांड ने इसे हल किया:

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

मनाइए कि यह किसी और के लिए सहायक हो!


1
इसने किसी तरह से mysql के विशेषाधिकारों को रीसेट कर दिया है और अब मैं लॉगइन करने में असमर्थ हूं ... यहां तक ​​कि mysql डॉक्स में बताई गई किसी फाइल का उपयोग करके पासवर्ड रीसेट करने के बाद भी।
कोडरमा

2
धन्यवाद, इसने मेरे लिए यह किया। और उसी समस्या वाले अन्य लोगों के लिए, यदि आप rvm का उपयोग करते हैं तो sudo को छोड़ दें, अन्यथा अनुमतियाँ शायद बदल जाएंगी।
डैनमेन मैन

2
यदि आप RVM का उपयोग नहीं कर रहे हैं, तो भी मैजिक कमांड काम करता है - mysql2-0.2.6/lib/mysql2/mysql2.bundleजहां भी आपके रत्न स्थापित हैं, वहां इंगित करने के लिए अंतिम तर्क को बदल दें ।
टोबियास कोहेन

2
बहुत बहुत धन्यवाद। पृथ्वी पर आपने यह कैसे पता लगाया?
डेरेक

7
धन्यवाद! मुझे अपने मैक ओएस एक्स लॉयन के लिए रूबी 1.9.2-p180, mysql2 मणि ​​0.3.10 के साथ RVM 1.6.4 पर चलने के लिए थोड़ा अलग कमांड की जरूरत थी:sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.10/lib/mysql2/mysql2.bundle
रैंडी

88

इस फिक्स ने मेरे लिए बहुत अच्छा काम किया:

निम्नलिखित को अपने ~ / .profile में जोड़ें

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/


1
आपका बहुत बहुत धन्यवाद। इसने मेरे लिए काम किया। (मैक ओएस एक्स 10.6.6i, रूबी 1.9.3p327), आरवीएम का उपयोग कर।
१५

की पुष्टि। यही सब मुझे ऑक्स मावरिक पर 10.9.1
आर्टूर79

40

मेरे लिए यह सिर्फ इसलिए था क्योंकि मैंने mysql को अपग्रेड किया था, लेकिन mysql2 मणि ​​को अपडेट नहीं किया था - मणि का पुनर्स्थापना इसे ठीक कर देगा ...

gem pristine mysql2


यह चयनित उत्तर होना चाहिए।
एल गुआपो

26

मेरे साथ भी वही दिक्कत है। ऐसा लगता है कि यह libmysqlclient लाइब्रेरी खोजने में असमर्थ है। मेरे लिए काम किया गया एक अस्थायी सुधार निम्नलिखित है:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

मुझे यकीन नहीं है कि जहां कॉन्फ़िगरेशन लोड पथ निर्दिष्ट कर रहा है या वह क्या सेट है लेकिन मेरा mysql इंस्टॉल उसमें नहीं दिखाई दिया। अगर मुझे और स्थायी समाधान मिल जाए तो मैं फिर से पोस्ट करूँगा।

संपादित करें: वास्तव में यह फिक्स समस्या को अधिक सटीक रूप से संबोधित करता है।


24

अपने नीचे जोड़ें ~/.bash_profile:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

इसने मेरे लिए काम किया


हां, 1.9.3-p448 पर काम करता है। शर्म की बात है कि यह एक स्वीकृत जवाब नहीं है।
andreimarinescu

17

OSX El Capitan अपडेट में जब आप ऐसा करते हैं:

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

यह एक त्रुटि की तरह फेंकता है

ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

तो इससे बचने के लिए, आप जो कर सकते हैं, वह पहले libmysqlclient.18.dylibकमांड का उपयोग करके पता करें

User$ locate libmysqlclient.18.dylib

मेरे मामले में यह वापस आ गया /usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib

इसलिए usr/lib/हम इसके बजाय usr/local/lib/इस तरह से सिमिलिंक बनाएंगे :

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

अधिक जानकारी: https://forums.developer.apple.com/thread/7935


1
मेरे लिए एल Capitan पर यह सब तुम ले लिया था अंतिम पंक्ति:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
जस्टिन

खुशी है कि यह किसी की मदद की। : D
सोनी मैथ्यू

यह elcapitan के लिए सही जवाब है आपका लक्ष्य लिंक /usr/local/libफ़ोल्डर पर होना चाहिए
अर्नोल्ड

13

निम्नलिखित लाइनें मेरे लिए काम करती हैं। मैं 10.7.2 मैक का उपयोग कर रहा हूं।

सुडो ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib


1
यह वही है जिसने मेरा मुद्दा तय किया है। धन्यवाद!
जस्टिन बोजोनियर

11

बस इस समस्या में भाग गया। मुझे बस इतना करना था कि mysql2 मणि ​​को अनइंस्टॉल कर दिया जाए और इसे फिर से स्थापित किया जाए। आशा है कि यह अन्य लोगों के लिए काम करता है


1
मेरी मशीन पर, Mavericks को चलाने पर, मैंने mysql2 के सभी संस्करण मणि के साथ हटा दिए और mysql2 की स्थापना रद्द कर दी और All versionsप्रॉम्प्ट पर उत्तर दिया। मैं तो काढ़ा उन्नयन mysql भागा और फिर मणि स्थापित mysql2।
मार्टिन स्ट्रीचर

4

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

मैंने नीचे की कमान चलाई
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dyvibib ~ / .vvm / जवाहरात / रूबी-1.9.2-p180 / जवाहरात / mysql2-0-0-0 /lib/mysql2/mysql2.bundle

मेरा वातावरण:
$ रेल -v रेल 3.0.6

$ mysql --version
mysql Ver 14.14 डिस्ट्रीब्यूट 5.5.11, osx10.6 के लिए (i386) का उपयोग करते हुए लाइनलाइन 5.1।

$ माणिक -v
रूबी 1.9.2p180 (2011-02-18 संशोधन 30909) [x86_64-darwin10.7.0]

आशा है कि यह किसी की मदद करता है।


3

धन्यवाद, ओगापो! निर्यात करने वाले उर्फ ​​ने मेरे लिए काम किया, और फिर मैंने लिंक का अनुसरण किया, और मेरे मामले में mysql2.bundle /Library/Ruby/Gems/1.8/gems/mysql2-0.2.2.6.6.lib/mysql2/mysql2.bundle में था मैंने ~ / .rvm में एक के बजाय उस बंडल को संशोधित करने के लिए install_name_tool को समायोजित किया और उसे काम करने का तरीका मिला।

तो अब:

   $ otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
    /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
        /usr/local/mysql/lib/libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

3

नमस्ते, यह मेरे लिए फ्रेडी एंडरसन से अनुशंसित लिंक से काम किया

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

बस कमांड में mysql के मेरे संस्करण में बदलना पड़ा, धन्यवाद


3

मैंने अपनी वर्तमान परियोजना के लिए अपने रत्न को हटाकर और इसे फिर से बनाना और बंडल बंडल स्थापित करके इस समस्या को हल किया। मुझे लगता है कि मैंने mysql का एक नया संस्करण स्थापित करके इसका कारण बना।


3

Django के साथ काम करते समय मेरे पास यह मुद्दा था, मैं brewअपने बहुत सारे ओपन सोर्स प्रोग्राम इंस्टॉल करने के लिए उपयोग करता हूं और जब से मैं brewइंस्टॉल करता था, तब मुझे निम्नलिखित करने की आवश्यकता थी mysql:

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

पुस्तकालयों के अपने संस्करण के साथ प्रतिस्थापित करना सुनिश्चित करें!


3

bundle install mysql --forceमेरी मदद की। इसने निर्भरता को पुन: स्थापित किया कि कौन सा बर्तन किसके परिणामस्वरूप चला गया brew uninstall mysql


Unknown switches '--force'
अर्नोल्ड रोया

2

जॉन्टी, मैं इसके साथ भी संघर्ष कर रहा हूं।

मुझे लगता है कि यहाँ एक सुराग है:

otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
    libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

Dylib के लिए रास्ता नोटिस, उह, बल्कि छोटा है?

मैं यह पता लगाने की कोशिश कर रहा हूं कि मणि स्थापित करने के निर्देश डिलीब पथ से निकल रहे हैं, लेकिन यह धीमा चल रहा है क्योंकि मैंने खुद एक मणि नहीं बनाया है।

मैं और अधिक पोस्ट अगर मैं और अधिक मिल जाएगा!


2

मैं कुछ दिनों पहले यह एक ही समस्या थी। मैं अंततः इसे हल करने में कामयाब रहा। मुझे यकीन नहीं है कि कैसे, लेकिन मैं आपको बताऊंगा कि मैंने वैसे भी क्या किया। शायद यह आपकी मदद करेगा।

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

यह क्यों उपयोगी है? क्योंकि आपको OS X में डिफ़ॉल्ट रूबी इंस्टॉलेशन के साथ गड़बड़ नहीं करनी चाहिए। सिस्टम इस पर निर्भर करता है। केवल डिफ़ॉल्ट रूबी और आरओआर इंस्टॉलेशन को छोड़ना और आरवीएम का उपयोग करके एक नया बनाना सबसे अच्छा है जिसे आप अपने स्वयं के विकास के लिए उपयोग कर सकते हैं।

एक बार जब मैंने अपना अलग रूबी इंस्टॉलेशन बनाया, तो मैंने सिर्फ RoR, RubyGems और mysql स्थापित किए, और यह काम किया। मेरे द्वारा उठाए गए सटीक चरणों के लिए, मेरा प्रश्न देखें: रेल, MySQL, आदि को स्थापित करना सब कुछ गलत हो जाता है

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


2

मैंने अभी भी पाया है कि उपरोक्त समाधानों के साथ, यह TextMate के लिए रेल्स प्लगइन के साथ काम नहीं करता है (उदाहरण के लिए)। मुझे एक समान त्रुटि मिली (डेटाबेस स्कीमा को पुनर्प्राप्त करते समय)।

तो क्या किया, खुला टर्मिनल है:

cd /usr/local/lib
sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib .

Mysql-5.5.8-osx10.6-x86_64 को बदलें को अपने पथ (या mysql) से ।

यह लिब का एक लिंक बनाता है, अब कमांड लाइन से रेल चलती है, साथ ही TextMate प्लगइन (ओं) जैसे रूबी-ऑन-रेल्स-टंबल

स्पष्ट होने के लिए: यह उस त्रुटि को भी ठीक करता है जो आपको रेल सर्वर शुरू करते समय मिलती है।


2

यह आमतौर पर तब होता है जब आप mysql को अपग्रेड करते हैं। स्थापित mysql2 रत्न जो पुराने mysql lib पर बनाया गया था, वह नए lib के साथ काम नहीं कर सकता है। बस इसे पुनः स्थापित करने की आवश्यकता है।

Mysql2 को अनइंस्टॉल करें gem uninstall mysql2। फिर इसके साथ इंस्टॉल करेंgem install mysql2


1

मैंने अपने प्रोजेक्ट फ़ोल्डर contring में .rvmrc फ़ाइल बनाकर इसे हल कर लिया है:

rvm use <yourrubie>

फिर मेरी परियोजना पथ में प्रवेश

cd ~/myprojectpath

फिर मैं दौड़ता हूं

bundle install

1

लवर्स की कमान का मेरा संस्करण:

मैक OSX 10.10.5

MySQL 5.6.27

यात्री 5.0.21

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

यदि आप बहुत से विभिन्न लिंक आज़मा रहे हैं, जैसे मैंने किया, तो कुछ सफाई करें:

sudo unlink /usr/lib/libmysqlclient.18.dylib


1

एक टर्मिनल खोलें और निम्नलिखित चलाएँ:

export PATH=$PATH:/usr/local/mysql/bin

यह काम करना चाहिए।


1
इसने काम किया, धन्यवाद !!! मुझे विजुअल स्टूडियो कोड पर Django चलाने में परेशानी हो रही थी। यह त्रुटि रखता है कि क्या मैंने virtualenv पर mysqlclient स्थापित किया है।
इरशू

0

यदि आप OSX का उपयोग कर रहे हैं और काढ़ा का उपयोग करके mysql स्थापित कर रहे हैं, तो आप कर सकते हैं:

brew link mysql

यदि आपको संस्करण से परेशानी हो रही है (मेरे पास 5.7 रनिंग थी जबकि मेरे रत्न को 5.6.25 की आवश्यकता थी), तो आप कर सकते हैं

brew unlink mysql
brew switch mysql 5.6.25

0

मेरे लिए मुझे मैन्युअल रूप से mysql की स्थापना रद्द करनी थी

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