2013-10-21 5 views
10

मैं heroku pg:push कमांड का उपयोग करके अपने स्थानीय पोस्टग्रेस्क्ल डेटाबेस को उसकेोकू में धक्का देना चाहता हूं। आदेश इस तरह दिखता है: heroku pg:push mylocaldb DATABASE --app sushi heroku दस्तावेज़ के अनुसार: https://devcenter.heroku.com/articles/heroku-postgresqlpostgres://bill:[email protected]/mysitedb:Heroku में डेटाबेस को पुश करें: heroku pg का उपयोग कैसे करें: पुश

Name: mysitedb 
User: bill 
Password: bill 

मेरी मशीन में DATABASE_URL वातावरण चर के लिए सेट है:

यहाँ मेरी स्थानीय डेटाबेस की जानकारी है।

मेरा ऐप का नाम secure-gorge-4090 है। मैंने heroku pg:push mysitedb DATABASE --app secure-gorge-4090 की कोशिश की। आउटपुट था:

! Remote database is not empty. 
! Please create a new database, or use `heroku pg:reset` 

मुझे आश्चर्य हुआ कि मैंने अपने डाटाबेस में कुछ भी नहीं रखा है। लेकिन मैं अभी भी अपने डाटाबेस को रीसेट करने के लिए heroku pg:reset DATABASE चला गया। इसके बाद, मैंने heroku pg:push mysitedb DATABASE --app secure-gorge-4090 फिर से प्रयास किया लेकिन आउटपुट अभी भी वही था।

मैंने heroku pg:push postgres://bill:[email protected]:8000/mysitedb DATABASE --app secure-gorge-4090 की कोशिश की। आउटपुट था:

! LOCAL_SOURCE_DATABASE is not a valid database name 

मुझे नहीं पता कि यह स्थानीय डेटाबेस को उसके स्थानीय डेटाबेस को स्थानांतरित करने के लिए कैसे उपयोग करें। मुझे आपकी मदद चाहिए। धन्यवाद!

उत्तर

12

क्या आप वास्तव में अपने आदेशों में टोकन DATABASE में टाइप कर रहे हैं, या यह है कि आप इस प्रश्न के लिए उपयोग कर रहे प्लेसहोल्डर हैं? docs you linked to से:

Like pull but in reverse, pg:push will push data from a local database into 
a remote Heroku Postgres database. The command looks like this: 

$ heroku pg:push mylocaldb HEROKU_POSTGRESQL_MAGENTA --app sushi 

This command will take the local database “mylocaldb” and push it to the 
database at DATABASE_URL on the app “sushi”. In order to prevent accidental 
data overwrites and loss, the remote database must be empty. You will be 
prompted to pg:reset an already a remote database that is not empty. 

Usage of the PGUSER and PGPASSWORD for your local database is also supported 
for pg:push, just like for the pg:pull commands. 

जब आप heroku config -a secure-gorge-4090 करते हैं, आप HEROKU_POSTGRESQL_[SOME COLOR NAME] के लिए एक प्रवेश देखना चाहिए। सुनिश्चित करें कि आप अपने आदेशों में DATABASE के बजाय टोकन का उपयोग कर रहे हैं।

चूंकि आपके पास अपने स्थानीय डेटाबेस पर उपयोगकर्ता नाम और पासवर्ड है, इसलिए आपको PGUSER और PGPASSWORD के बारे में भी उल्लेख करने की आवश्यकता है। यहाँ pg:pull डॉक्स से उदाहरण है:

$ PGUSER=postgres PGPASSWORD=password heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi 

तो आप की तरह कुछ करना चाहिए:

$ PGUSER=bill PGPASSWORD=bill heroku pg:push mysitedb HEROKU_POSTGRESQL_[SOME COLOR] -a secure-gorge-4090 
+0

दर्ज किया है इस पुराने अनसुलझा प्रश्न पर ध्यान देने के लिए धन्यवाद! मैंने अभी अपने आदेशों में 'डेटाबास' टाइप किया है। वास्तव में, 'डेटाबेस' पहले से ही मेरे डिफ़ॉल्ट डेटाबेस - 'हीरोकू-POSTGRESQL-VIOLET' के रूप में सेट है। तो आदेश 'heroku pg: mysitedb डेटाबैस --app safe-gorge-4090' और' heroku pg दबाएं: mysitedb को दबाएं HEROKU-POSTGRESQL-VIOLET --app सुरक्षित-gorge-4090' का एक ही प्रभाव होना चाहिए। आपकी सलाह के बाद, मैंने 'HEROKU_POSTGRESQL_COBALT' नामक एक नया डेटाबेस बनाया और 'PGUSER = बिल PGPASSWORD = बिल heroku pg: mysitedb HEROKU_POSTGRESQL_COBALT --app सुरक्षित-gorge-4090' दबाएं, लेकिन एक ही त्रुटि हुई। –

+0

कौन सी त्रुटि? आप "दूरस्थ डेटाबेस खाली नहीं है" त्रुटि का उल्लेख करते हैं और "LOCAL_SOURCE_DATABASE मान्य डेटाबेस नाम नहीं है" त्रुटि। – carols10cents

+0

"दूरस्थ डेटाबेस खाली नहीं है" त्रुटि। –

6

मैं जानता हूँ कि यह एक पुरानी चर्चा है, लेकिन मैं ठीक उसी समस्या थी। हालांकि यह काफी सुविधाजनक नहीं है, मैं इसे पीजी के माध्यम से प्राप्त करने में कामयाब रहा: इसके बजाय बैकअप।

यह नि: शुल्क pgbackups ऐड-ऑन स्थापित करके heroku support site

प्रारंभ पर बहुत अच्छी तरह से विस्तृत है:

heroku addons:add pgbackups 

तब बैकअप डेटाबेस अपने स्थानीय pg_dump उपयोगिता का उपयोग (PostgreSQL distro में शामिल है)

pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dmp 

फिर उस डंप फ़ाइल को कहीं भी यूआरएल-एड्रेसिबल (उदा।ड्रॉपबॉक्स) और Heroku आयात (चलाने सुनिश्चित करें कि यह है विंडोज के लिए दोहरे उद्धरण चिह्नों):

heroku pg:backups:restore 'https://dropbox.com/dYAKjgzSTNVp4jzE/mydb.dmp' DATABASE_URL 
+1

एकमात्र तरीका मैंने पाया कि काम करता है। धन्यवाद – longJOURNEY

+1

दो बातें ध्यान दें: चेतावनी: 'heroku addons: add' को बहिष्कृत कर दिया गया है। कृपया इसके बजाय 'heroku addons: create' का उपयोग करें। ! ऐड-ऑन सेवा या "pgbackups" की ऐड-ऑन योजना नहीं मिल सका। – jasonleonhard

0

आप निम्न आदेश की जरूरत है

PGUSER=root PGPWD=root heroku pg:push (local database name) DATABASE_URL --app heroku (app name) 

करें कि आप सही postgres यूज़रनेम और पासवर्ड