2012-03-31 42 views
0

我想用heroku db:push上傳我的本地postgresql數據庫到Heroku提供的5Mb共享數據庫。一切工作正常,但數據庫不反映我在我的本地數據庫上有什麼。一些記錄被重複,其他的只是丟失。所以,如果我有三個記錄在我的本地數據庫:Heroku db:推送不正確地複製數據庫

cat, dog, banana 

當我使用DB:推我結束了:

dog, dog, cat 

我DB具有約10萬條記錄3-4 MB總。任何想法如何我可以解決這個問題?

我的database.yml:

發展:

adapter: postgresql 
encoding: unicode 
database: myDB 
username: myUname 
password: myPw 
host: localhost 
port: 5432 
reconnect: true 

生產:

adapter: postgresql 
encoding: unicode 
database: myDBname 
username: myUname 
password: myPW 
host: ec2-23-21-140-215.compute-1.amazonaws.com 

這所有的數據庫信息,我從

heroku config 

了其中給出一個數據庫URL與主持人,用戶名等

+0

沒有透露任何敏感,可以顯示什麼在你的database.yml配置文件? – 2012-03-31 19:23:14

+0

您可能需要指定要推送到生產環境的本地數據庫(例如,heroku db:push sqlite://local.db) – 2012-03-31 19:23:56

+0

您正在運行哪個Ruby?我在Ruby 1.9.3上遇到了'db:push'的問題,但回到1.9.2解決了它。 – 2012-03-31 19:48:36

回答

0

雖然方便,使用點擊(數據庫:推送使用的內容)可能不會完全複製您的數據,並且可能會遇到錯誤以進行更大的傳輸。要從生產系統導入或導出數據,我們強烈建議使用pgbackups。

https://devcenter.heroku.com/articles/import-data-heroku-postgres#from_postgres

https://devcenter.heroku.com/articles/pgbackups#importing_from_a_backup

+0

偉大的工作,謝謝!我剛剛爲heroku安裝了pgbackup插件,在pgadmin中填入了我數據庫的一個.dump文件,並將文件上傳到了amazon S3。然後我只是使用pgbackups:恢復和亞馬遜s3的URL和數據庫複製過來罰款。這兩個鏈接概述了你必須做得很好。你可能不得不惹惱亞馬遜S3的權限。 – 2012-04-01 05:04:37

0

Push本質上是數據的副本,替換已經存在的表(它不會觸及不屬於推送的表的表)。

我不知道爲什麼你得到你遇到的問題,但你可以重置你的數據庫,並推來獲得你想要的全新副本:

heroku pg:reset 
heroku db:push 
+0

試過這個,沒有工作。奇怪的是,壞的副本總是不同的。有一次它錯過了前20條記錄,再試一次,那些記錄在那裏,中間的100條記錄不見了。 – 2012-03-31 23:14:28