2011-08-17 12 views
16

साथ प्रयोग के लिए खिड़कियों पर Postgres स्थापित कर रहा है वर्तमान में मैं निम्नलिखित त्रुटि मिलती है:रूबी-ऑन-रेल

PGError (FATAL: password authentication failed for user "postgres"):

जब मेरे एप्लिकेशन डेटाबेस का उपयोग करने के लिए कोशिश करता है।

मैं पोस्टग्रेज़ के खिलाफ अपने एसक्यूएल कॉल का परीक्षण करना चाहता था क्योंकि मेरे ऐप नियमित रूप से टूट जाता है क्योंकि पोस्टग्रेज़ की कठोर आवश्यकताओं (जो मुझे लगता है कि शायद एक स्वस्थ चीज है) स्क्लाइट 3 पर है। तो मेरे पास विंडोज़ (7) पर रेल पर रूबी के साथ उपयोग के लिए पोस्टग्रेर्स स्थापित करने के लिए पुराने आउट ट्यूटोरियल के लिए इसी तरह के अनुरोध to this। मैंने सोचा कि यह डाउनलोड करने और इंस्टॉल करने में तेज़ 20 मिनट होगा लेकिन 2 और कुछ घंटों बाद और मुझे नहीं लगता कि मैं अभी तक बहुत करीब हूं। अब तक मैंने:

डाउनलोड और Postgres संस्करण स्थापित 8.4.8-1 from here

मेरी पर्यावरण चर सेट ऐसा है कि (उपयोगकर्ता के लिए) पथ है: C:\Ruby192\bin;C:\Program Files (x86)\PostgreSQL\8.4\bin

Gemfile:

gem 'pg', '0.11.0' # instead of gem 'sqlite3', '1.3.3' 

मेरे रेल ऐप के लिए प्रतीत होता है कि bundle install चलाया गया है, लेकिन अभी तक इंस्टॉलेशन को सत्यापित करने का आसान तरीका नहीं मिला है।

सेट database.yml as suggested here रहे हैं:

development: 
    adapter: postgresql 
    database: db/development 
    username: postgres 
    password: secret 
    host: localhost 
    encoding: UTF8 
    pool: 5 
    timeout: 5000 

मैं जानता हूँ कि मैं जरूरत set up a user name and password for Postgres, maybe also start the postgres server, connect to it(?) करने के लिए और अपने स्थानीय आईपी पते में डाल रहा into a config files somewhere पर उससे कनेक्ट और फिर दूसरे .conf में से एक को संपादित करेंगे फाइलें 'सी: \ प्रोग्राम फ़ाइलें (x86) \ PostgreSQL \ 8.4 \ data' आदि ...

मुझे लगता है कि रेल ने मुझे नरम बना दिया है, क्या मैं चीजों को सोचने पर हूं या यह वास्तव में स्थापित करने के लिए काफी मुश्किल है और मैं बस Sqlite3 पर वापस जाना चाहिए, जिसके लिए भी बेहद उपयोगी SQLite प्रबंधक, फ़ायरफ़ॉक्स प्लगइन है?

मैं अभी भी स्थापित करने और रेल के लिए Postgres का उपयोग कर, लेकिन अभी तक केवल सामान मैं पर देखने के सबसे द्वारा भ्रमित किया गया है करने के लिए एक शुरुआती गाइड के लिए खोज कर रहा हूँ/कोशिश की this, this, this, this, this तरह निम्नलिखित (के लिए हिम तेंदुए), this (लिनक्स)।

किसी भी पॉइंटर्स की बहुत सराहना की जाएगी। धन्यवाद! official PostgreSQL डॉक्स -

जेम्स

+0

मैं बस https से Postgresql स्थापित

database: development 

मैं आदेश के लिए रेल पर रूबी के लिए इसका उपयोग यह करने के लिए बदलना होगा : //postgrespro.com/windows, अन्य सभी सेटअप - आम तरीका। – prograils

उत्तर

67

रेलवे 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 डीबगिंग! कृपया इसमें संपादित करें, या मुझे बताएं, अगर इसमें कोई त्रुटि है।

इसके अलावा, यहां कि दिलचस्प/उपयोगी हो सकता है अतिरिक्त सामान की एक सूची है:

  • यह एक blog post about Postgres passwords है, वे क्या, क्यों उन्हें जरूरत है, उन्हें परिवर्तित करने के आदि
  • रहे
  • This, under 'Creating a spatial database', is useful for newbies to understand what pg_hba.conf is about और the second link that Reno gave above, 'का उपयोग pgAdmin तृतीय जीयूआई' के तहत यदि postgres वास्तव में रेल के साथ यह फिट करने के लिए प्रयास करने से पहले, काम कर रहा है (देखने के लिए परीक्षण के लिए उपयोगी है यानी एक डेटाबेस बनाने और एक मेज इसे में कुछ डेटा डालने और कोशिश)।
  • huge but very comprehensive Postgres documentation में, मैं पृष्ठ 58 पर शुरू करूंगा, 'I. ट्यूटोरियल '। फिर पीडीएफ पेज 431 (!) पर 'अध्याय 17. सर्वर सेटअप और ऑपरेशन' है जिसे मैंने भी उपयोगी पाया।
+1

बस चरण 2 में पर्यावरण चर बदलने के बाद इसे जोड़ना चाहते थे, आपको अपने कंप्यूटर को पुनरारंभ करना होगा। लॉग आउट और बैक इन शायद काम भी करेगा, लेकिन मुझे किसी भी तरह से पुनरारंभ करने की ज़रूरत है, इसलिए मैंने यही किया। – Gavin

+2

बहुत बढ़िया पोस्ट। मुझे बहुत मदद मिली :) – Ajay

+0

मैं विंडोज 7 64x और रेल 4.2.4 पर पोस्टग्रेस 9.5 चला रहा हूं और यह ठीक काम करता है – Matthias

2

अपने लिंक में से कोई भी (बेशक) सबसे अधिक उपयोगी प्रलेखन प्रतीत होता है। मैंने हाल ही में उन दस्तावेज़ों और these के संयोजन का उपयोग करके पोस्टग्रेस्क्ल और डीजेंगो के साथ एक लिनक्स मिंट बॉक्स को कॉन्फ़िगर किया है, हालांकि बाद वाले लिनक्स के लिए विशिष्ट हैं।

मैं रेल के बारे में कम चीजों के पोस्टग्रेस्क्ल पक्ष को सत्यापित करने के बारे में और अधिक चिंता करता हूं। ऐसा कहने के लिए, आपका प्रश्न "विंडोज 7 बॉक्स पर एक पोस्टग्रेस्क्ल सर्वर कैसे स्थापित और परीक्षण कर सकता है", मोरसो आपको यह जानने की जरूरत है कि इसे रेल में कैसे लॉक किया जाए।

संपादित करें: शायद this भी आप के लिए काम का हो सकता है - विस्तृत स्थापना गाइड के साथ आधिकारिक PostgreSQL विकि।

शुभकामनाएं!

+0

धन्यवाद रेनो। वे लिंक अंदर जाने के लिए एक बेहतर दिशा की तरह दिखते हैं। मैं वापस कैसे पोस्ट करूंगा इसके साथ पोस्ट करूंगा। (बहुत बढ़िया, http://wiki.postgresql.org/wiki/Running_%26_Installing_PostgreSQL_On_Native_Windows#What_versions_of_Windows_does_PostgreSQL_run_on.3F पहले से ही मुझे बताया है के रूप में 8.4 विंडोज 7 से पहले जारी किया गया था मैं postgres के गलत संस्करण है ... धन्यवाद रेनो! :)) – AJP

+0

खुशी है कि मैं मदद कर सकता हूँ! – Reno

2

एजेपी का उत्तर सिर्फ एक छोटी पुनः कॉन्फ़िगर के साथ सही है। लाइन

database: db/development 

मेरे लिए काम नहीं करता। मैं

rake db:create 

और

rake db:migrate 

काम करने के लिए