2010-06-28 17 views
15

mysql के साथ एक नया रेल 3 बीटा 4 ऐप शुरू करने की कोशिश कर रहा है .... ओएस एक्स हिम तेंदुए चल रहा है। रेल के पिछले संस्करणों के बारे में मुझे MySQL के साथ कोई समस्या नहीं है।रेल 3 माइस्क्ल समस्याएं

अपरिभाषित विधि `MySQL के लिए init ':: कक्षा

+0

क्या आपके पास Gemfile में 'gem' mysql' है? –

+0

जब यह आधिकारिक रिलीज आया, तो यह समस्या मेरे लिए दूर हो गई, मेरे लिए यह बीटा रिलीज का उपयोग कर रहा था, यह सिर्फ एक समस्या थी। –

उत्तर

16

अपने Gemfile 'mysql2' का उपयोग करने के लिए परिवर्तित करें, यह एक और अधिक आधुनिक चालक है और अच्छे सुविधाओं की है के रूप में अन्य लोगों का उल्लेख किया है।

नई रेल अनुप्रयोगों डिफ़ॉल्ट रूप से mysql2 मणि ​​का उपयोग करें।

+5

सुनिश्चित करें कि आप "एडाप्टर: mysql2" के बजाय "एडाप्टर: mysql2" का उपयोग करने के लिए अपनी डेटाबेस.आईएमएल फ़ाइल को भी बदल दें, अन्यथा आपको mysql2 मणि ​​लोड होने के बारे में कोई त्रुटि नहीं मिलेगी। – nikz

+3

क्या मुझे एक mysql2 मणि ​​स्थापित करने की भी आवश्यकता है? यह करीब दिख रहा है। मुझे निम्न त्रुटि मिली: रेक निरस्त हो गया! dlopen (/Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle, 9): लाइब्रेरी लोड नहीं हुई: libmysqlclient.18.dylib से संदर्भित:/लाइब्रेरी/रूबी/रत्न /1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle कारण: छवि नहीं मिली - /Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle /उपयोगकर्ता/क्रिस/rails_projects/sienab/rakefile: 4 (--trace के साथ कार्य चलाने के द्वारा पूर्ण ट्रेस देखें) – chris

+0

यदि आपको तैयार कथन की आवश्यकता है, तो आप Sequel मणि का उपयोग कर सकते हैं, क्योंकि MySQL2 मणि ​​अभी तक इसका समर्थन नहीं करता है। https://github.com/jeremyevans/sequel –

3

मैं लेकिन अब जब मैं रेल शुरू 3 एप्लिकेशन मैं निम्न त्रुटि जब मैं क्लिक करें" के बारे में आपके आवेदन पर्यावरण "रेल index.html स्टार्टअप स्क्रीन पर मिल mysql मणि से ruby-mysql मणि करने के लिए स्विचिंग समाप्त हो गया, काम किया।

+1

यह वास्तव में काम करता है ~~ mysql.gem और mysql2.gem काम नहीं कर रहा है ... – lkahtz

+1

यह वास्तव में एक समाधान नहीं है, क्योंकि आप देशी कोड (कुछ हद तक धीमी) के बजाय रूबी का उपयोग करने के लिए बदल रहे हैं। Nzkoz सुझाव के रूप में आपको mysql2 मणि ​​पर स्वैप करना चाहिए। – nikz

1

मुझे लगता है कि मुझे समस्या का समाधान मिला है। मेरे मामले में समस्या यह थी कि mysql मणि बंडलर का उपयोग करके ठीक तरह से स्थापित नहीं किया गया है। जब मैं इस किया था:

बंडल mysql (noobish गलती) स्थापित

सभी जवाहरात mysql निर्देशिका के लिए गया था, लेकिन बाद में मैं बंडलर मणि की डॉक्स जाँच की है और ऐसा किया:

बंडल स्थापित bundler_files (यह जानने के लिए कि भविष्य में रत्न कहां हैं)

सब कुछ ठीक दिखता है सिवाय इसके कि जब mysql मणि इंस्टॉल हो रहा था तो मुझे कुछ त्रुटियां मिलीं। मैंने देखा कि यह मेरे फ़ोल्डर पथ "/ home/pawel/Aptana स्टूडियो वर्कस्पेस/myrails_app"

यदि आपके फ़ोल्डर पथ में रिक्त स्थान हैं तो यह मणि ठीक से इंस्टॉल नहीं होगा और बाद में जब आप पथ को संशोधित करेंगे रिक्तियों के बिना और mysql मणि यह अभ्यस्त किसी भी त्रुटि प्रदर्शित स्थापित करने का प्रयास, लेकिन स्थापना दूषित हो जाएगा, क्योंकि आप कुछ फाइलों के साथ वहाँ कुछ अतिरिक्त फ़ोल्डरों होगा आदि तो

जीईएम फ़ोल्डर बंडलर द्वारा बनाया हटाएँ और पुनः स्थापित इस आदेश के साथ रत्न:

बंडल स्थापित

इससे समस्या हल हो गई।

2

सरल उपयोग के लिए, जो सामान्य (कनेक्टिंग, पूछताछ, परिणामों पर पुनरावृत्त) है, मुझे mysql2 मणि ​​मिला जो mysql या ruby-mysql रत्नों से अधिक तेज़ है और उचित प्रकार के मूल्यों को ऑटो-कैस्ट करता है। और यह पूरी तरह से हिम तेंदुए पर स्थापित करता है जबकि मैं काम करने के लिए mysql मणि नहीं मिल सका। http://github.com/brianmario/mysql2

7

मैं एक ही मुद्दा में भाग पर

अधिक जानकारी (आरओआर 3, OSX 10.6, mysql 2.8.1 मणि)।

आप आतंक विरोधी बाहर शासन करने के लिए आईआरबी का उपयोग कर सकते हैं:

irb 
require 'rubygems' 
require 'mysql' 
db = Mysql.connect('hostname', 'username', 'password', 'database') 

यदि उपरोक्त काम नहीं करता है, तो आप mysql मणि निकालकर और पुनर्स्थापित करने का प्रयास कर सकते हैं। मैं एक पोस्ट में आया कि bundle install त्रुटियों को प्रदर्शित किये बिना इंस्टॉल को गड़बड़ कर सकता है।

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

सत्यापित करें बातें irb के माध्यम से काम करते हैं, उसके बाद फिर से रेल शुरू।

+0

यह i386 आर्क के लिए भी काम करता है: uname -a डार्विन iMac-LZ.local 10.5.0 डार्विन कर्नेल संस्करण 10.5.0: शुक्र नवम्बर 5 23:20:39 पीडीटी 2010; जड़: XNU-1504.9।17 ~ 1/RELEASE_I386 i386 – Vitalie

+2

ऐसा करने के बाद, मुझे त्रुटि मिलती है: MySQL के लिए 'अपरिभाषित विधि' कनेक्ट ': /Users/sscirrus/.rvm/rubies/ruby-1.9.2-p0/bin/irb:16 से कक्षा :

'में। इसे कैसे ठीक करें? – sscirrus

1

आप mysql2 मणि ​​पर स्विच करने का प्रयास कर सकते हैं जो आपके लिए उन सभी मुद्दों को हल करना चाहिए।देखें: https://github.com/brianmario/mysql2/

0

मैं हिम तेंदुए के उन्नयन के बाद एक ही मुद्दा है। MySQL मणि स्थापित करने पर, मैं प्रलेखन, के बारे में त्रुटियों की एक गुच्छा तो मिल गया सर्वर चल रहा पर:

undefined method `init' for Mysql:Class 

मैं भी अन्य रत्नों से कुछ इसी तरह की है, लेकिन कोई संबंध नहीं मुद्दों कर रहा विशेष रूप से उन है कि सी घटकों था

Unable to compile native extensions 

इन त्रुटियों को 64 वास्तुकला आधार में देशी एक्सटेंशन से कोई लेना देना थे: कि इस तरह के RedCloth और Hpricot के रूप में संकलन की जरूरत है। समाधान तीन गुना था:

  1. मैंने एक्सकोड 4 को पुनर्स्थापित किया। हिम तेंदुए के अपग्रेड ने मेरे सी कंपाइलर को तोड़ दिया था, इसलिए कुछ रत्न संकलन करने में असफल रहे। यह मुझे एक कदम करीब ले गया, लेकिन इस मुद्दे को ठीक नहीं किया।
  2. मैंने उड़ा दिया और आरवीएम को पुनः स्थापित किया। ऐसा लगता है कि एक निर्देशिका में रत्न स्थापित करना और उन्हें दूसरे में ढूंढना प्रतीत होता है। यह हर मूल वास्तुकला बेस 64 त्रुटि तय करता है, लेकिन MySQL मणि अभी भी विफल रहा था।
  3. मैंने MySQL को संस्करण 5.1 में हटा दिया और घटा दिया। यह MySQL मणि मुद्दा तय किया।

सभी अब अच्छी तरह से फिर से है।

1

मुझे लगता है कि क्या होता है यह है कि mysql मणि MySQL गतिशील लाइब्रेरी को लोड करने में सक्षम नहीं है (जिसे मूल MySQL स्थापना द्वारा प्रदान किया जाना चाहिए)। यह हो रहा है कि क्या जांचने के लिए इस

$ irb 
1.9.2p320 :001 > require 'mysql_api' 
=> true 
1.9.2p320 :002 > 

करते हैं यह इस निम्न स्तर mysql_api, (जो वास्तव में mysql मणि में कार्यक्षमता की आपूर्ति) लोड करने में सक्षम नहीं है, यह आप कुछ संभावित रूप से उपयोगी त्रुटियों दे देंगे। आमतौर पर यह गतिशील पुस्तकालय खोजने में सक्षम नहीं है। इसे ठीक करने के मैं समाधान की एक जोड़ी पाया:

http://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard से, सिस्टम-वाइड के लिए यह

कर स्थापित

sudo env ARCHFLAGS="-arch i386" gem install mysql -- \ 
    --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \ 
    --with-mysql-include=/usr/local/mysql/include 

या स्थानीय http://alexbraunstein.com/2011/08/12/library-loaded-libmysqlclient-18-dylib/ से स्थापित

env ARCHFLAGS="-arch i386" gem install mysql -- \ 
    --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \ 
    --with-mysql-include=/usr/local/mysql/include 

और उसके बाद .bash_profile में डाल:

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