2011-08-07 17 views
5

से आरओआर परिवर्तन अनुप्रयोग डेटाबेस मेरे पास एक वेब अनुप्रयोग है जो SQLite का उपयोग करता है। मैं इसे Heroku पर तैनात करता हूं जो PostgreSLQ का उपयोग करता है। यह कभी-कभी समस्याओं का कारण बनता है और मुझे सलाह दी गई थी कि SQLite के बजाय PostgreSQL का उपयोग करके मेरा ऐप विकसित करें।आरओआर SQLite से PostgreSQL

मुझे पता चला कि मैं (परीक्षण और उत्पादन के लिए एक ही) उस तरह database.yml को संशोधित करना चाहिए:

development: 
    adapter: postgresql 
    database: my_database 
    username: my_username 
    password: my_passwod 
    host: /var/run/postgresql or localhost 

खैर केवल डेटाबेस मैंने कभी उपयोग किया है SQLite है, इसलिए मैं सिर्फ अपनी जोखिम लेने की कोशिश की, परंतु विफल हो गया। मैंने इस फाइल को कुछ यादृच्छिक डेटा से भर दिया।

rake db:migrate परिणामस्वरूप में:

जब मैं host: localhost

> could not connect to server: Connection refused Is the server running 
> on host "localhost" and accepting TCP/IP connections on port 5432? 

इस्तेमाल किया जब host: /var/run/postgresql

> could not connect to server: No such file or directory 
> Is the server running locally and accepting connections on Unix domain socket 
> "/var/run/postgresql/.s.PGSQL.5432"? 

मुझे लगता है मैं PostgreSQL सर्वर पहले शुरू कर देना चाहिए, लेकिन कैसे यह करने के लिए पता नहीं है। कृपया मुझे एक चरण-दर-चरण उत्तर दें कि एक SQLite एप्लिकेशन से एक काम करने वाले PostgreSQL एप्लिकेशन में कैसे स्थानांतरित करें।

+0

रूबी ऑन रेल और पोस्टग्रेस के साथ रोलिंग करने के लिए यहां एक ट्यूटोरियल है: http://vandenabeele.com/Rails-on-Ubuntu-Jaunty। और पोस्टग्रेज़ के लिए यहां एक गहरा कदम-दर-चरण है: http://www.yolinux.com/TUTORIALS/LinuxTutorialPostgreSQL.html। – atrain

+0

http://stackoverflow.com/questions/6710654/how-do-you-easily-change-from-sqlite-to-postgresql-in-rails के संभावित डुप्लिकेट –

उत्तर

2

मैं आपको सलाह देना चाहता हूं कि आपको पोस्टग्रेस्क्ल डाउनलोड करना चाहिए जिसमें पीजीएडीएमआईएन स्वयं शामिल है जो psql टर्मिनल से उपयोग करना आसान है।

और मुझे लगता है कि जब आप अपनी आधिकारिक वेबसाइट से पोस्टग्रेस्क्ल डाउनलोड/इंस्टॉल करते हैं ... पैकेज पहले से ही पूरा हो गया था।

इंस्टॉल करने पर, पोस्टग्रेस्क्ल आपको एक निश्चित पासवर्ड पूछेगा जिसका उपयोग आप अपने postgresql सर्वर तक पहुंचने में करेंगे।

स्थापना के बाद, PGADMIN खोलें और सर्वर से कनेक्ट करें। अपना पासवर्ड दर्ज करें (जिसे आपने इंस्टॉलेशन के दौरान घोषित किया था)।

यदि आप सर्वर से कनेक्ट नहीं कर सकते हैं, तो पोर्ट संपादित करें। ऐसा करने के लिए, सर्वर पर राइट क्लिक करें, फिर गुणों पर जाएं ... बंदरगाह को मुफ्त में संपादित करें। उदाहरण: 5433 और इसी तरह। यह आप पर निर्भर करता है।

सब कुछ अंत में काम कर रहे अपने database.yml

के लिए ... सेटअप सही config है, तो यह महत्वपूर्ण है:

development: 
    adapter: postgresql 
    database: name_of_database_here 
    host: localhost 
    username: postgres 
    password: your_db_server_password_here 
    pool: 5 
    timeout: 5000 
    port: 5433 

कि config जानकारी ऊपर से ठीक है, महत्वपूर्ण भागों निर्दिष्ट करें। डिफ़ॉल्ट रूप से, आपका डीबी सर्वर उपयोगकर्ता नाम पोस्टग्रेज़ है और जाहिर है कि आपका होस्ट लोकलहोस्ट है क्योंकि आप विकास के तहत स्थापित हैं।

यदि आपका पोर्ट डिफ़ॉल्ट रूप से 5432 है तो बस पोर्ट भाग को हटा दें।

चलो अपने रत्न पर जाएं।

आपके लिए अपनेोकू में अपना ऐप तैनात करने के लिए। Sqlite3 के बजाय मणि 'pg' का प्रयोग करें।

यदि आपके पास मौजूदा sqlite3 डेटाबेस है तो मणि को विकास समूह के अंदर रखें। उस स्थिति में, हेरोकू सफलतापूर्वक गिट पुश हेरोकू मास्टर प्रक्रिया के दौरान बंडल करेगा।

group :development do 
     gem 'sqlite3' 
end 

आपका gem 'pg' या तो समूहों के बाहर जाना या अपने उत्पादन समूह में रख सकते हैं।

महत्वपूर्ण:

किसी भी तैनाती प्रक्रिया से पहले, यह सुनिश्चित करें कि आप अनुप्रयोग स्थानीय रूप से चला सकते हैं (स्थानीय होस्ट) बनाते हैं। तो अगर सब कुछ काम कर रहा है ... वह समय है कि आपको आवश्यक सामानों को उचित रूप से व्यवस्थित करना चाहिए।

यदि आप ऐपोकू को ऐप को धक्का देने के बाद sqlite3 के बजाय पोस्टग्रेस्क्ल पर स्विच करना चाहते हैं ... तो आप अपने स्थानीय postgresql डीबी सर्वर में डंप फ़ाइल को pgbackups एड-ऑन और pg_restore द्वारा ऐसा कर सकते हैं।

यही है। आशा करता हूँ की ये काम करेगा।