2012-03-31 21 views
0

heroku db:pushを使用して、私のローカルpostgresqlデータベースを5Mb共有データベースHerokuが提供するデータベースにアップロードしようとしています。すべて正常に動作しますが、データベースは自分のローカルDBにあるものをミラーリングしません。レコードの一部が複製され、他のレコードが欠落しています。私は私の地元デシベルの3つのレコード持っていたのであれば:Heroku db:データベースを正しくコピーしないでください

cat, dog, banana 

を私はDBを使用する場合:私はで終わるプッシュ:

dog, dog, cat 

私のDBは、約100,000レコードの3〜4メガバイトの合計を持っています。どのように私はこれを修正することができますどのような考え?

マイ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 

このすべては、私は、データベースのURLを与える

heroku config 

から取った情報をDBホストと、ユーザ名など。

+0

敏感な何かを明らかにすることなく、あなたのdatabase.ymlを設定ファイルに何があるかを示すことができますか? –

+0

プロダクション環境にプッシュするローカルデータベースを指定する必要があります(つまり、heroku db:push sqlite://local.db) –

+0

実行しているRubyはどれですか? Ruby 1.9.3では 'db:push'に問題がありましたが、1.9.2に戻って解決しました。 –

答えて

0

をタップ(db:プッシュが使用するもの)はデータを正確に複製することができず、大きな転送ではエラーに陥る可能性があります。プロダクションシステムからデータをインポートまたはエクスポートするには、代わりに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をgreateし、そのファイルをamazon S3にアップロードしました。それから私はちょうどpgbackupsを使用しました:リストアとamazon s3のURLとdbは正常にコピーされました。これらのリンクはどちらも、あなたがしなければならないことを概説しています。あなたはamazon s3パーミッションを混乱させなければならないかもしれません。 –

0

プッシュは、本来、そこにあるテーブルを置き換えるデータのコピーです(プッシュの一部ではないテーブルには触れません)。

は、私はあなたが抱えている問題を取得している理由はわからないんだけど、あなたはあなたのDBをリセットして、あなたが何をしたいのクリーンコピーを取得するためにプッシュすることができます:使用して、便利な一方で

heroku pg:reset 
heroku db:push 
+0

これを試してもうまくいかなかった。何が奇妙なのは、常に違うコピーです。 1回目は最初の20レコードがなくなってしまい、もう一度やり直してみてください。それらはそこにあり、ミドル100はなくなりました。 –

関連する問題