2009-12-22 13 views
16

मुझे रूबी mysql मणि ड्राइवर स्थापित करने का प्रयास करने में कोई समस्या है।हिम तेंदुए पर mysql मणि स्थापित करने में समस्या: अनियमित स्थिर MySQLCompat :: MySQLRes

मैंने हाल ही में हिम तेंदुए में अपग्रेड किया और MySQL का हेवेलॉग मैनुअल इंस्टॉल किया। यह सब ठीक काम करने लगता है क्योंकि मैं कमांड लाइन से mysql तक पहुंच सकता हूं और डेटाबेस में परिवर्तन कर सकता हूं।

rake aborted! 
uninitialized constant MysqlCompat::MysqlRes 

(See full trace by running task with --trace) 

अब ऐसा लगता है कि मेरी mysql मणि सही ढंग से काम नहीं कर रहा है के रूप में मैं का उपयोग कर अजगर से MySQL ठीक पहुँच सकते हैं:

मेरे समस्या यह है कि अगर मैं अब

rake db:migrate 

का उपयोग मैं मिलता है पायथन ड्राइवर (जिसे मैंने संकलित किया)। , http://techliberty.blogspot.com/ (संयोग से मैं उपयोग कर रहा हूँ एक हाल ही में इंटेल मैकबुक प्रो): इसलिए मैं इस साइट से निम्न आदेश का उपयोग कर मणि पुनर्निर्माण करने की कोशिश

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

यह संकलित हालांकि मैं पाने के प्रलेखन के लिए कोई परिभाषा:

Building native extensions. This could take a while... 
    Successfully installed mysql-2.8.1 
    1 gem installed 
    Installing ri documentation for mysql-2.8.1... 

    No definition for next_result 

    No definition for field_name 
    ... 

मैं के रूप में मेरे mysql_config सही जगह में स्थित है एक छोटे से स्टंप्डया हूँ:

/usr/local/mysql/bin/mysql_config 

और मैं mysql के अन्य सभी इंस्टेंस को हटा दिया है मणि, मेरे सिस्टम से।

किसी भी सुझाव की सराहना की जाएगी। बहुत धन्यवाद।

पीएस मैंने पिछली पोस्ट uninitialized constant MysqlCompat::MysqlRes (using mms2r gem) देखा लेकिन यह मेरे संस्करण के लिए लागू नहीं प्रतीत होता है।

उत्तर

10

ठीक है, मैंने अंततः इस समस्या को हल कर लिया है।

ऐसा होने का कारण यह था कि मेरे पास रूबी के दो संस्करण स्थापित थे।

  1. मैंने बर्फ तेंदुए की स्थापना से पहले, हाइव्लोगिक दिशानिर्देशों के बाद रूबी के अपने संस्करण को संकलित और स्थापित किया था।
  2. मैं तो हिम तेंदुए

इन दोनों संस्करणों विरोध हुआ (जो रूबी की उसके अपने संस्करण है) और मतलब जब कभी मैं सही ARCHFLAGS साथ MySQL मणि स्थापित करने की कोशिश की प्रणाली सोचा कि मैं था करने के लिए उन्नत रूबी के एक अलग संस्करण का उपयोग कर। कट्टर x86_64 -

sudo env ARCHFLAGS = ":

  1. रूबी की HiveLogic संस्करण (http://pivotallabs.com/users/chad/blog/articles/407-removing-old-ruby-source-installation-after-a-leopard-upgrade)
  2. पुन: संयोजित सही ARCHFLAGS साथ MySQL मणि निकालें:

    ठीक काफी सरल था "मणि --no-rdoc --no-री mysql स्थापित - --with-mysql-config =/usr/स्थानीय/mysql/bin/mysql_config

एक बार मैंने यह सब किया था ठीक है। उम्मीद है कि यह आपके लिए काम करता है।

बी

+1

मुझे पता चला कि मेरी समस्या को हल करने के लिए चरण # 2 को फिर से संकलित करें, आपके लिए पोस्ट करने के लिए धन्यवाद। – Jirapong

+0

भी दिए गए आदेश और काम कर रहे जुर्माना के साथ recompiled। धन्यवाद। – PowerKiKi

2

मैंने हाइवलोगिक post के निर्देशों को लागू किया है लेकिन MySQL के संस्करण 5.1.41 के साथ। और मणि स्थापना के लिए मैंने 2 चीजें की:

sudo gem uninstall mysql 
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

और चीजें मेरे लिए बहुत अच्छी काम करती हैं।

+0

धन्यवाद खेल - हाँ यह अजीब है। मुझे अभी भी एक ही समस्या है क्योंकि किसी कारण से मेरा सिस्टम बस ऐसा ही करता है। मैंने एक रेक डीबी की कोशिश की: ड्रॉप और प्राप्त करें: mysystem $ रेक डीबी: ड्रॉप (में/उपयोगकर्ता/उपयोगकर्ता नाम/डेवेल/रेल/myproj/trunk) myproj नहीं छोड़ सका: # कोई अन्य विचार? धन्यवाद – emson

+0

क्या आपने संस्करण 5.1.41 के साथ प्रयास किया था? इससे पहले कि सुनिश्चित करें कि आप बिल्डिंग फ़ाइल को मिश्रित न करने के लिए/usr/local/mysql पर सब कुछ हटा दें। – khelll

2

यहां भी वही समस्या है; इस सप्ताह के साथ और दो हफ्तों से कुश्ती कर रहे हैं!

मैं कोई आरओआर विशेषज्ञ नहीं हूं, लेकिन समाधान प्राप्त करने वाले अन्य जानकार लोगों से, समस्या रूबी जेम को mysql के लिए इंगित करती है, जाहिर है, गलत तरीके से मैक पर स्थापित हो जाती है।

मैं रूबी फोर्ज साइट पर जांच करना जारी रखूंगा, और देख सकता हूं कि कोई रूबी जेम गुरु इस भयानक बग को सही कर सकता है .... मुझे अपने रेल काम करने की ज़रूरत है! समय ही धन है!

तो मैंने इस बग को RubyForge Mysql developers bug tracking page पर रिपोर्ट किया।

मुझे यकीन है कि वे मदद कर सकते हैं, क्योंकि यह मेरी वर्तमान परियोजना को अपंग कर रहा है।

और यदि कोई और मेरी बग रिपोर्ट का समर्थन कर सकता है, तो शायद यह अधिक ध्यान मिलेगा; कृपया झुक जाओ!

0

मैं पिछले दिन के लिए बहुत मुश्किल यह समस्या हल नहीं हो रही है काम किया है और मैं अंत में यह समझ से बाहर। मैं बर्फ तेंदुए चला रहा हूं और एक ताजा रेल और mysql स्थापित किया है। काम करने के लिए मुझे एकमात्र तरीका था एमएसक्यूएल के 64 बिट संस्करण को डीएमजी (मैकपोर्ट्स) से स्थापित करना और बूटिंग के दौरान "6" और "4" कुंजी को दबाकर 64 बिट मोड में अपनी मशीन को पुनरारंभ करना था। फिर मैंने मणि स्थापित किया, मेरा डीबी होस्ट स्थानीय पर सेट किया और यह एक चैंप की तरह काम किया।

6

ठीक है, मैं एक नौसिखिया हूँ। थोड़ी देर के लिए संघर्ष करने के बाद और चूंकि उपर्युक्त में से कोई भी मेरे लिए काम नहीं करता है, इसलिए मुझे लगता है कि मेरी "mysql" 64-बिट स्थापना के कारण समस्या थी, जबकि रूबी 32-बिट थी। इन आदेशों

file `which mysql` 
file `which ruby` 

दोनों साथ चेक मच-ओ 64-बिट निष्पादन योग्य x86_64 या मच-ओ 64-बिट निष्पादन योग्य i386 मेल खाना चाहिए। मैंने 32-बिट MySQL स्थापित किया, स्रोत और रेल से रूबी को पुनर्स्थापित किया और चीजें तब से बेकार ढंग से काम कर रही हैं। मैं तेंदुए बीटीडब्ल्यू पर हूं।

+0

आपको और आपके द्वारा खड़े सभी को आशीर्वाद दें। मैं हर दोपहर इस समस्या के खिलाफ अपने सिर को टक्कर लगी हूं और अंत में आप इसे मेरे लिए हल कर चुके हैं। काश मैं सिर्फ एक अपवित्र से अधिक दे सकता हूं। – abeger

+1

@abeger, मैंने उसे आपके लिए एक उपरांत दिया है। –

1

समस्या के साथ अपने सिर को रैक करने के बाद, मुझे यह भी पता चला कि समस्या को उसी mysql मणि संस्करण के एकाधिक बाइनरी के साथ करना था। निम्नलिखित मेरे लिए तय है।

gem uninstall mysql 
Select gem to uninstall: 
1. mysql-2.8.1 
2. mysql-2.8.1 
3. All versions 
> 3 

Successfully uninstalled mysql-2.8.1 
Successfully uninstalled mysql-2.8.1 

इसके बाद, मैं अपने Snow Leopard मशीन पर स्रोत से mysql मणि कंपाइल, और पूरी दुनिया के साथ प्रफुल्लित था।

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql-5.1.46-osx10.6-x86_64/bin/mysql_config 
0

कई समस्याएं रूचि और रत्नों के अप्रचलित या कई विरोधाभासी बाइनरी से संबंधित थीं। मुझे अपने कोड को रूबी 1.9 के साथ चलाने के दौरान सिस्टम रूबी के साथ mysql मणि को संकलित करने के लिए "पारदर्शी रूप से" समस्या है। इस धागे को समस्या का पता लगाने के बाद, सब कुछ सुचारू रूप से चला गया।

इन समस्याओं से बचने के लिए और रिकॉर्ड के लिए, RVM टूलकिट बहुत आसान हो सकता है: http://rvm.beginrescueend.com। यह कई रूबी संस्करणों को व्यवस्थित करने में मदद करता है, और यह प्रत्येक संस्करण के लिए प्रतिलिपि बनाए बिना चालाकी से सभी संस्करणों के लिए रत्न प्रबंधित करता है।

ऐसा लगता है कि आरवीएम का उपयोग इस धागे में कई मुद्दों से बचने में मदद कर सकता है।

0

यदि कोई रूबी 1.8.7 और mysql x86 (32 बिट्स संस्करण) के साथ आरवीएम का उपयोग कर रहा है और यह समस्या है। आपको यह लिंक उपयोगी लगेगा: http://rvm.beginrescueend.com/integration/databases/। आपको x86_64 संस्करण में mysql इंस्टॉल करने की आवश्यकता होगी और फिर mysql मणि को archflags के साथ x86_64 पर सेट करें। इसका कारण यह है कि आप अपने mysql x86 से मेल खाने के लिए मणि को x86 के रूप में स्थापित करने का प्रयास करते हैं। हालांकि रूबी संस्करण 64 बिट्स में है। तो आपको वास्तव में सभी तीन मैच होने चाहिए: रुबी, माइस्क्ल और माइस्क्ल मणि। तो 64 बिट्स में से सभी को आसान तरीका है।

0

मेरे लिए बहुत तेज़ ठीक है।

यह समस्या इस सप्ताह फिर से एक विकास मशीन पर मेरे ऊपर आ गई जो मैं कभी-कभी उपयोग नहीं करता था। प्रति emson की प्रारंभिक प्रतिक्रिया के चरण 2 के रूप में, यह केवल सही ARCHFLAGS साथ MySQL मणि की एक कंपाइल आवश्यक:

sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 
0

मैं इस किया था, या कम से कम एक समान, इस मुद्दे (Hivelogic शामिल नहीं किया गया और यह नहीं था एक अपग्रेड, बल्कि एक नई प्रणाली)। मैं मानता हूं कि यह शायद 64 बिट मुद्दा है। मेरे पास आपके लिए एक लिंक है, कि मैंने जो भी अन्य सिर और बट खरोंच किया, उसके बाद मैंने अंततः अपने गधे (और मस्तिष्क) को बचा लिया।

[http://forums.mysql.com/read.php?116,359591,359591]

भाग्य इस विन्यास बी एस अतीत और कुछ कोडिंग करने पर होने का सबसे अच्छा।

0

इस विशेष समस्या को हल करने के लिए लंबे समय तक खोज करने के बाद, और उपरोक्त सभी विकल्पों (और कई अन्य साइटों पर विकल्प) की कोशिश करने के बाद, मैंने अपना mysql-5.5 इंस्टॉल किया और mysql-5.1 स्थापित किया। अचानक, और 64 बिट संस्करणों को संकलित करने के लिए उपर्युक्त सहायता के साथ, मैं अंत में एक काम कर रहे mysql मणि स्थापित करने में कामयाब रहे।

तो, यदि आप इस समस्या में भाग रहे हैं और mysql 5.5 चला रहे हैं, तो mysql 5.1 को अपमानित करने का प्रयास करें।

1

आप MySQL 5.5 उपयोग कर रहे हैं, इन चरणों का है कि यह हमारे लिए काम किया जाता हैं: स्थापित करने के लिए

कमान mysql-2.8.1:

sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

कमान mysql 5.5 के साथ mysql-2.8.1 काम करने के लिए:

sudo ln -s ../mysql/lib/libmysqlclient.16.dylib libmysqlclient.16.dylib 

आशा है कि मदद करता है!

+1

क्या आप इसे पूर्ण पथ से समझा सकते हैं? – harm

18

मूल रूप से समस्या गतिशील पुस्तकालय libmysqlclient नहीं मिल सकता है। उपर्युक्त समाधान काम करेंगे, लेकिन जब भी आप मणि को पुनर्निर्माण करते हैं, या जब आप MySQL का नया संस्करण स्थापित करते हैं तो आपको उन्हें फिर से लागू करने की आवश्यकता होती है।

एक वैकल्पिक दृष्टिकोण है कि आपके डायनामिक लोड पथ में लाइब्रेरी युक्त MySQL निर्देशिका को जोड़ना है। मेरी Bashrc फाइल में निम्नलिखित लाना समस्या हल:

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH" 
+0

आप रॉक! इसके लिए धन्यवाद। – jschorr

+0

आप पुरुषों के बीच राजकुमार हैं! धन्यवाद स्टीवन! – andrewdotnich

10

कई दिनों मैं अंत में मिला इसे किसी न किसी के लिए इस समस्या के साथ कुश्ती के बाद। 2 चीजें हैं जो मैंने किया है कि यह काम किया:

  1. sudo env ARCHFLAGS = "- मेहराब x86_64" मणि --no-rdoc --no-री mysql स्थापित - --with-mysql-config =/usr/स्थानीय/mysql/bin/mysql_config
  2. निर्यात DYLD_LIBRARY_PATH = "/ usr/स्थानीय/mysql/lib: $ DYLD_LIBRARY_PATH"

मैं थोड़ा आश्चर्य है कि # 2 केवल स्टीवन द्वारा उल्लेख किया गया था कर रहा हूँ Chanin।

मैं हिम तेंदुए पर हूं, और केवल 1 MySQL (x86_64) 5.5, और 1 रूबी (हिम तेंदुए के साथ प्रीपेक्टेड) ​​स्थापित है।

0

मुझे एक ही समस्या थी। मैंने/usr/local/mysql/current/में/usr/local/mysql में mysql (मेरे मामले में, हिम तेंदुए के लिए 5.1.48 64-बिट) स्थापित किया था। हालांकि, mysql क्लाइंट शर्ड लाइब्रेरी (libmysqlclient.16.dylib) में इसमें शामिल /usr/local/mysql/lib/libmysqlclient.16.dylib का पथ था।

इस install_name_tool का उपयोग कर ठीक करने के लिए कई निष्फल प्रयासों के बाद, क्या काम किया दोनों साझा लाइब्रेरी में पथ को बदलने के लिए इस प्रकार है, और फिर mysql 2.8.1 rubygem पुनर्निर्माण, यह निर्दिष्ट था दोनों मेरे:

# change the path embedded in libmysqlclient.dylib 
sudo install_name_tool -change /usr/local/mysql/lib/libmysqlclient.16.dylib /usr/local/mysql/current/lib/libmysqlclient.16.dylib /usr/local/mysql/current/lib/libmysqlclient.16.dylib 

# reinstall the mysql gem 
sudo ARCHFLAGS="-arch i386 -arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/usr/local/mysql/current --with-mysql-config=/usr/local/mysql/current/bin/mysql_config 

ध्यान दें कि यह mysql/usr/local/mysql/current में स्थापित होने पर आधारित है, आपको अपने सिस्टम के लिए उपयुक्त पथ संपादित करने की आवश्यकता होगी।

1

एक मौका है कि आपने उपरोक्त निर्देशों का पालन किया है लेकिन MySQL को पुनर्स्थापित करने से पहले सर्वर को मारना भूल गया। यह त्रुटि संदेश को दूर नहीं करेगा। यह मेरे साथ हुआ।

ps aux | grep 'mysql'

kill [pid_number_for_mysql]

मूल रूप से, सर्वर .. मुश्किल तरीके से मारने:

यहाँ सभी विभिन्न विकल्पों की कोशिश कर के बाद, मैं निम्नलिखित की कोशिश की। फिर, सर्वर को पुनरारंभ करें।

संबंधित मुद्दे