रेलवे 3 (3.0.7) प्रोजेक्ट के लिए PostgreSQL डेटाबेस के रूप में उपयोग के लिए विंडोज 7 पर पोस्टग्रेर्स स्थापित करने का एक दृष्टिकोण।
प्रस्तावना (आप इस बिट छोड़ सकते हैं)
तो बाहर बात करने के लिए पहली बात यह है कि Postgres .sqlite3 से सिर्फ एक अलग फाइल एक्सटेंशन नहीं है, यह अपने डेटाबेस के प्रबंधन के लिए एक पूरे तंत्र है । चूंकि इसमें एक क्लाइंट/सर्वर मॉडल है, जिसमें से आपको पोस्टग्रेज़ को अपने रेल ऐप के डेटाबेस के रूप में उपयोग करने के लिए दोनों सेट अप करने की आवश्यकता होगी। ताकि आप Heroku करने की तैनाती कर रहे हैं, वे वर्तमान में Postgres का उपयोग कर रहे अपने एसक्यूएल कॉल कि sqlite3 पर ठीक जब Postgres के साथ प्रयोग किया टूट जाएगा रहे हैं में से कुछ: लगभग सरल SQLite सेटअप बनाम Postgres स्थापना के काफी दर्द के माध्यम से जाने के लिए
प्रेरणा । हेरोकू के सर्वर पर होने के बजाय स्थानीय रूप से पोस्टग्रेज़ को डीबग करना बहुत आसान है।
इसलिए मैंने निम्न चीज़ें की: (अस्वीकरण: मैं कुछ चीजों को शामिल करना भूल गया था ... यह मुझे काम करने के लिए 48 घंटे से अधिक दर्द और दर्द से दूर ले गया ... अगर निम्नलिखित सलाह आपके लिए काम नहीं करती है तो विशाल (2300 पेज !!) लेकिन very thorough Postgres documentation मदद करनी चाहिए। अगर आप पोस्टग्रेस का उपयोग करने के बारे में गंभीर हैं तो मैं इसे डाउनलोड करने की सलाह दूंगा क्योंकि इसमें बहुत सारी सामग्री है जो मेरे पास है बस के महत्व को समझना शुरू कर दिया।) (दूसरा अस्वीकरण: मैंने लगभग 20 समझदार पोस्टग्रेज़ दिशानिर्देशों को तोड़ दिया है और ऐसा करने के दौरान पोस्टग्रेज़ डेटाबेस में सुरक्षा छेद उजागर किया है। यदि कोई स्पष्ट पोस्ट एक अनुभवी पोस्टग्रेस उपयोगकर्ता असहमत है, तो कृपया मेरी संपादित करें पोस्ट।)
.Step 1. डाउनलोड करें और से here क्योंकि here कहा केवल 9.0.x विंडोज़ 7 पर समर्थित किया जाएगा मैं पासवर्ड के रूप में सभी डिफ़ॉल्ट विकल्प और सिर्फ इस्तेमाल किया 'गुप्त' रखा PostgreSQL v9.0.4-1 स्थापित जब पोस्टग्रेस इंस्टॉलर द्वारा एक के लिए संकेत दिया जाता है (फिर से पूरी तरह से सुनिश्चित नहीं है कि इंटरनेट पर उस जानकारी को साझा करने के परिणाम क्या हैं ... जल्द ही मुझे पता चलेगा)। आप चरण में इस पासवर्ड की आवश्यकता होगी 3.
.Step 2. पर्यावरण बदलें चर ऐसी है कि पथ (for system, not user (मुझे यकीन है कि अगर यह महत्वपूर्ण है या नहीं नहीं कर रहा हूँ)) है: C:\Program Files\PostgreSQL\9.0\bin
(nb मैं सी '64-बिट Windows इसलिए यह में 32-बिट के लिए स्थापित नहीं किया जा रहा पर हूँ': \ Program Files (x86) \ postgres ... ')
मत भूलना PostgreSQL फ़ोल्डर में अधिकारों का उपयोग बदलने के लिए \ 9.0 और फ़ोल्डर या सामग्री पर किसी भी डिफ़ॉल्ट रीडोनली अधिकारों को हटा दें। (इन्हें प्रभावी होने के लिए आपको अपने कंप्यूटर को पुनरारंभ करने की भी आवश्यकता हो सकती है - धन्यवाद @ गैविन- शायद संभावना नहीं है)।
.Step 3. टेस्ट Postgres स्थापना एक नया डेटाबेस बनाने के लिए कोशिश कर रहा द्वारा: कमांड लाइन से: createdb -U postgres mydb_as_postgres
। आपको अभी पासवर्ड दर्ज करने के लिए कहा जाना चाहिए, अगर ऐसा नहीं है कि आपको पहले सर्वर शुरू करने की आवश्यकता है (मुझे याद नहीं है कि मुझे ऐसा करने की आवश्यकता है या नहीं)। सबसे आसान तरीका pgAdmin III के माध्यम से है, जो C:\Program Files\PostgreSQL\9.0\bin
जैसे फ़ोल्डर में 'pgAdmin3.exe' होना चाहिए। एक बार जब आप pgAdmin III शुरू कर लेंगे तो 'ऑब्जेक्ट ब्राउज़र' नामक बाईं ओर एक पैनल होना चाहिए। इसमें एक पेड़ होना चाहिए:
सर्वर समूह> सर्वर> PostgreSQL 9।0 (लोकलहोस्ट: 5432)
'पोस्टग्रेएसक्यूएल 9.0 (लोकलहोस्ट: 5432)' पर राइट क्लिक करें और 'कनेक्ट' चुनें।
createdb -U postgres mydb_as_postgres
आदेश 'mydb_as_postgres' जो आप 'PostgreSQL 9.0 (: 5432 स्थानीय होस्ट)' पर pgAdmin तृतीय और डबल क्लिक ऊपर फायरिंग से जांच कर सकते हैं नामक एक नया databse बनाना चाहिए। इसके तहत होना चाहिए:
Databases (2)
जो सूचीबद्ध करना चाहिए 2 डेटाबेस mydb_as_postgres
और postgres
कहा जाता है मैं इसे _as_postgres
कहा जाता है क्योंकि आदेश के -U postgres
हिस्सा Postgres बताता है के रूप में यह मालिक है postgres उपयोगकर्ता के साथ डेटाबेस बनाने के लिए है, जो आपको पोस्टग्रेस उपयोगकर्ता के रूप में साइन इन नहीं होने पर निर्दिष्ट करना होगा। मेरे पास मेरी सभी फाइलें 'एजेम्स' उपयोगकर्ता के रूप में संग्रहीत हैं, हालांकि यदि आप वही हैं और एक अलग उपयोगकर्ता के रूप में साइन इन करते समय अपने ऐप को विकसित करना चाहते हैं तो आपको उस उपयोगकर्ता के लिए पोस्टग्रेस की भूमिका बनाने की आवश्यकता है (चरण देखें 4)।
.Step 4. pgAdmin III के माध्यम से। राइट-क्लिक करें लॉग इन भूमिकाओं पर (जो मेरे लिए में है): PostgreSQL 9.0 (स्थानीय होस्ट: 5432)
ऑब्जेक्ट ब्राउज़र> सर्वर समूह> सर्वर>> लॉगिन भूमिकाओं
राइट-क्लिक करें लॉग इन भूमिकाओं पर और 'नई लॉगिन भूमिका ... ' रोल नाम में, अपने ऑपरेटिंग सिस्टम उपयोगकर्ता नाम में डालें, जो मेरे लिए एजेम्स, है और' रोल विशेषाधिकार 'टैब के तहत अपना पासवर्ड भरें, मैंने सभी बक्से की जांच की, लेकिन एक अनुभवी पोस्टगर्स उपयोगकर्ता संभवतः 'मूल भूमिकाओं से विरासत अधिकार' की जांच करने और 'डेटाबेस ऑब्जेक्ट्स बना सकते हैं' की जांच करने की दृढ़ता से अनुशंसा की जाएगी, लेकिन मैं अनुभवी उपयोगकर्ता नहीं हूं और बस पोस्टग्रेज़ में रेल एसक्यूएल कॉल को डीबग करना चाहता हूं, इसलिए मैंने 'सुपरसुर' की भी जांच की और बस मामले में, 'भूमिकाएं बना सकते हैं'।
.Step 5. अब आप पोस्टग्रेस उपयोगकर्ता के रूप में साइन इन किए बिना एक नया डेटाबेस बनाने में सक्षम होना चाहिए। टाइप करने की कोशिश:
createdb mydb_as_user
उम्मीद है कि यह आपके लिए काम करना चाहिए।
.Step 6. ठीक है, तो आपके पास अपनी रेल 'डीबी /' निर्देशिका में develop.sqlite3 फ़ाइल है। शुरुआत में मैं अगले परीक्षण को एसक्लाइट 3 से psql में परिवर्तित करने के रूप में सेट करने जा रहा था।
मैं इसे काम करने के लिए नहीं मिला, लेकिन मैंने यहां अपने प्रयासों को छोड़ दिया क्योंकि समाधान के लिए मैंने Heroku.com पर रेल ऐप में डेटा रखने की आवश्यकता थी (इसके बजाय चरण 7 से समाधान देखें)। जिनके पास केवल स्थानीय ऐप है और हेरोोकू में कोई डेटा नहीं है, वे एक ही दृष्टिकोण का उपयोग नहीं कर सकते हैं, इसलिए उन्हें इस तरह कुछ पता लगाने की आवश्यकता हो सकती है:
x6.1 सबसे पहले, कमांड का प्रयास करके 'psql' का परीक्षण करें की तरह अपने कमांड लाइन से:
psql mydb_as_user
इस नीचे की तरह कुछ प्रदर्शित करना चाहिए (के बाद आप अपने पासवर्ड टाइप किया है):
C:>psql mydb_as_user
Password:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
mydb5=#
x6।2 कोशिश प्रवेश:
CREATE TABLE users_table (id integer, "name" text);
यह प्रदर्शित करना चाहिए:
ऑब्जेक्ट ब्राउज़र> सर्वर समूह> सर्वर:
CREATE TABLE
mydb5=#
आप pgAdmin III में जाँच हैं, तो आप तालिका वहाँ के तहत देखना चाहिए > PostgreSQL 9.0 (लोकलहोस्ट: 5432)> डेटाबेस> mydb_as_user> Schemas> public> टेबल्स> users_table>
x6.3 ठीक है, टी के बगल में आरई रूपांतरण। Downloaded sqlite-shell खिड़कियों के लिए precompiled बाइनरी।
x6.4 एक नई निर्देशिका बनाएं, मैंने 'सी: \ temp' का उपयोग किया और इसमें sqlite3.exe और अपनी develop.sqlite3 फ़ाइलें डालीं।
x6.5 Postgres में development.sqlite3 डेटाबेस को डंप करने के लिए निम्न आदेशों का उपयोग करें (जो here से हैं)।
sqlite3 development .dump | psql development2
आप की तरह त्रुटि आ सकती है: तो मैं pgAdmin III में चला गया और एक विकास 2 डेटाबेस बनाया है, आदेश को फिर से कोशिश की और मिल गया
psql: FATAL: database "development2" does not exist
x6.6:
ERROR: syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
^
BEGIN
COMMIT
जैसा मैंने कहा, मैं इसे काम नहीं कर सका। मुझे यकीन है कि उस त्रुटि को गोल करने का एक तरीका है लेकिन मैंने एक अलग तरीके से सोचा और इसलिए मैंने इस समाधान का उपयोग किया (जिसके लिए एक हेरोकू खाता आपके डेटा के लिए आवश्यक है और taps gem (I) का उपयोग करके sqlite3 से psql में रूपांतरण करता है विश्वास करते हैं):
.Step 7. pgAdmin III में मैं एक डेटाबेस बनाया गुण टैब के अंतर्गत मैं नाम सेट:। 'विकास', मालिक:। 'AJames' (अपने स्वयं के Windows उपयोगकर्ता नाम के साथ इस की जगह) और विशेषाधिकार टैब के अंतर्गत, भूमिका सेट: 'जनता' और सभी विकल्प (सोचा कि यह अनियंत्रित को रीसेट करता है तो मुझे यकीन है कि आवश्यक है नहीं कर रहा हूँ) की जाँच की
.Step 8. जोड़ें। आपकी मणि फ़ाइल में 10 । आप शायद इस बिंदु पर: gem 'sqlite3'
को भी हटाना चाहते हैं।
.Step 9. सेट database.yml रूप suggested here रहे हैं:
development:
adapter: postgresql
database: db/development
username: AJames # replace this with your own user name
password: secret # replace this with your own password
host: localhost
encoding: UTF8
pool: 5
timeout: 5000
आप एक खुला स्रोत परियोजना पर काम कर रहे हैं और अपने पासवर्ड के लिए सार्वजनिक रूप से उपलब्ध कराया जा नहीं करना चाहते हैं, एक नजर है Securely providing the database password in a Rails app के कुछ उत्तरों पर।
.Step 10 कमांड लाइन से अपने रेल एप्लिकेशन के रूट निर्देशिका समय में: rake db:migrate
इस नए स्कीमा और Postgres डेटाबेस में सभी तालिकाओं का निर्माण करेगा।
.Step 11। अपने सभी डेटा को नीचे और अपने नए खाली पोस्टग्रेज़ डेटाबेस में खींचने के लिए अपनी कमांड लाइन (फिर से अपने रेल ऐप की मूल निर्देशिका में से) से heroku db:pull
चलाएं। मुझे लगता है कि इस बिंदु पर आपके टैप्स मणि आपके लिए यह काम करेंगे।
.Step 12. उम्मीद है कि वहाँ कोई कदम 12 है! ... और अब यह आपके लिए काम करना चाहिए। हैप्पी RoR PostgreSQL डीबगिंग! कृपया इसमें संपादित करें, या मुझे बताएं, अगर इसमें कोई त्रुटि है।
इसके अलावा, यहां कि दिलचस्प/उपयोगी हो सकता है अतिरिक्त सामान की एक सूची है:
मैं बस https से Postgresql स्थापित
मैं आदेश के लिए रेल पर रूबी के लिए इसका उपयोग यह करने के लिए बदलना होगा : //postgrespro.com/windows, अन्य सभी सेटअप - आम तरीका। – prograils