2010-01-24 18 views
6

संपादित करें: समस्या का समाधान, इस मंच पोस्ट के लिए धन्यवाद: http://forums.aptana.com/viewtopic.php?f=20&t=7563&p=27407&hilit=libmysql.dll#p27407। सबको धन्यवाद!रेल राक त्रुटि पर रूबी

मैं आतंक विरोधी सीखने शुरू कर दिया है और rake db:migrate उपयोग करने के लिए कोशिश कर रहे हैं, लेकिन मैं एक ही त्रुटि मिलती रहती है। मैं C:\dev\railslist>mysql -u root railslist_development -p का उपयोग कर MySQL डेटाबेस से कनेक्ट कर सकता हूं। rake db:migrate --trace पैदा करता है निम्नलिखित:

development: 
    adapter: mysql 
    database: railslist_development 
    username: root 
    password: ********** 
    host: localhost 

    ... 

संपादित करें: क्षमा करें, मैं वहाँ मिश्रित मिल गया ... मैं से कनेक्ट कर सकते

C:\dev\railslist>rake db:migrate --trace 
(in C:/dev/railslist) 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:migrate 
rake aborted! 
Mysql::Error: query: not connected: CREATE TABLE 'schema_migrations' ('version' 
varchar(255) NOT NULL) ENGINE=InnoDB 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti 
on_adapters/abstract_adapter.rb:219:in 'rescue in log' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti 
on_adapters/abstract_adapter.rb:202:in 'log' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti 
on_adapters/mysql_adapter.rb:323:in 'execute' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti 
on_adapters/abstract/schema_statements.rb:114:in 'create_table' 
... 

मेरे database.yml फ़ाइल इस प्रकार है mysql connect localhost का उपयोग कर MySQL डेटाबेस - यह आदेशों और चरों की एक लंबी सूची उत्पन्न करता है। अगर मैं mysql -h localhost -u root -p दर्ज करता हूं तो मैं MySQL प्रॉम्प्ट में लॉग इन कर सकता हूं। तो स्पष्टीकरण के लिए: मैं कमांड लाइन के माध्यम से MySQL डेटाबेस से कनेक्ट कर सकता हूं, हालांकि RoR रेक में एक त्रुटि उत्पन्न होती है।

+0

आपकी डेटाबेस.आईएमएल फ़ाइल में क्या है? – Mick

उत्तर

1

यह लगभग निश्चित रूप से, क्योंकि आपके mysql उदाहरण नहीं चल रहा है या आप कॉन्फ़िगर नहीं किया है config/database.yml अपने परिवेश (आमतौर पर विकास) के लिए सही डेटाबेस में बताया जा रहा है। यहाँ चीजों की एक जोड़ी की कोशिश कर रहे हैं -

  • की जाँच करें अपने config/database.yml - जहाँ आपके मेजबान है (कोई मेजबान सूचीबद्ध है, यह स्थानीय होस्ट से कनेक्ट करेंगे)
  • चलाने की कोशिश करें mysql -h लोकलहोस्ट और देखें कि MySQL चल रहा है या नहीं।

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

संपादित 2: इस मामले में, आपकी समस्या यह है कि आपका डेटाबेस नहीं बनाया गया है। सीधे शब्दों में एक कमांड लाइन के पास जाकर निम्न लिखें:

mysql -u root -p -e 'create database railslist_development;'

इस डेटाबेस बनाना होगा और आप अपना माइग्रेशन चलाने के लिए अनुमति देते हैं।

+0

धन्यवाद, मैंने डेटाबेस.आईएमएल फ़ाइल पोस्ट की है, क्या आप वहां कोई समस्या देख सकते हैं? –

+1

समस्या हल हो गई - आपकी मदद के लिए धन्यवाद! –

2

डीबी नहीं बनाया गया है।

MySql का उपयोग कर, rake db:migrate चलाने से पहले तुम क्या कर डीबी बनाना चाहिए:

rake db:create 

या SQL कमांड के माध्यम मैन्युअल डेटाबेस बनाने के।

 
mysql -h localhost -u root -p 
> CREATE DATABASE railslist_development; 

मुझे आशा है कि यह आपकी मदद करेगा।

+0

हमम ... कॉलिंग 'रेक डीबी: बनाएं' एक "डेटाबेस पहले से मौजूद है" त्रुटि देता है (मैंने इसे SQL कमांड का उपयोग करने से पहले बनाया था) इसलिए मैंने डेटाबेस हटा दिया और फिर कोशिश की। सफलता! मैंने MySQL के साथ जांच की है और डेटाबेस बनाया गया है - लेकिन मुझे अभी भी एक ही त्रुटि मिलती है जब 'रेक डीबी: माइग्रेट' को कॉल करते हैं। create': मैं भी एक अजीब त्रुटि संदेश जब 'बुला रेक db मिला ' C: \ देव \ railslist> रेक db: बनाने (C:/dev/railslist)

: [bug] विभाजन गलती माणिक 1.9.1 पी 243 (200 9-07-16 संशोधन 24175) [i386-mingw32] - नियंत्रण फ्रेम ---------- सी: 0001 पी: 0000 एस: 0002 बी: 0002 एल: 0026 9सी डी : 0026 9 सी टॉप ' –

+0

क्या आपको लगता है कि यह रूबी के साथ एक बग/समस्या है जिसका सामना करना पड़ रहा है, या क्या मुझे अभी भी कुछ सेट अप नहीं मिला है? ऐसा लगता है रूबी * कर सकते हैं * MySQL के साथ संवाद कर सकते हैं (यह डेटाबेस बनाया गया है, हालांकि एक त्रुटि के साथ), लेकिन रेक डीबी पर विफल रहता है: माइग्रेट करें। –

2

मैं आपके सवाल का जवाब देने से प्रति नहीं कर रहा हूँ, लेकिन जब से तुम सिर्फ सीख रहे हैं, क्यों अब के लिए सरल SQLite से टिक नहीं?

+0

धन्यवाद, मैं इसके बारे में सोचूंगा। –

3

यहां स्पष्टीकरण के लिए - समस्या यह है कि क्लाइंट MySQL लाइब्रेरी वर्तमान में रेल 2.3 के साथ काम नहीं करती है।

इसे ठीक करने के:

  1. डाउनलोड क्लाइंट लाइब्रेरी here
  2. ड्रॉप अपने माणिक बिन निर्देशिका में इस फाइल के एक पुराने संस्करण
  3. अपने MySQL सेवा पुन: प्रारंभ करें

    [1]: [1]: http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll "यहां"

+0

हाय, आपकी मदद के लिए धन्यवाद, आप सही हैं कि मेरी समस्या थी। हालांकि, मैंने इसे पहले ही हल कर लिया है, जैसा कि आप मेरे प्रश्न के शीर्ष पर देख सकते हैं। –

+0

यह मेरे लिए काम किया। साथ ही, सुनिश्चित करें कि आपके डेटाबेस.एमएलएल में आपके लोकहोस्ट के लिए सही सेटिंग्स हैं। – hohner

+0

कम से कम [इस लड़के] के क्रेडिट या संदर्भ दें (http://www.continuousgreg.com/blog/?p=41) .. – JMelnik

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