2009-08-24 7 views
2

は、私はコマンドheroku rake db:migrateと私のモデルを移行するとともに、HerokuのサーバへのMySQL(ローカルDEV)と私のRuby on Railsのアプリをプッシュすることができました。私はDatabase Import/Exportのドキュメントも読んだ。そのドキュメントは私のローカルdevのDBから実際のデータをHerokuのDBにプッシュすることを指していますか?それを実現させるためにファイルdatabase.ymlの中の何かを修正する必要がありますか?ローカルテーブルschema_migrationsからHeroku DBにプッシュされないようにする方法を教えてください。

Sending data 
2 tables, 3 records 
!!! Caught Server Exception         | ETA: --:--:-- 
Taps Server Error: PGError ERROR: duplicate key value violates unique constraint 
"unique_schema_migrations" 

私は2つのテーブル、私は私のアプリのために作成1および他のschema_migrationsを持っている:

heroku db:push 

と、私はエラーを取得しています:

は、私は、次のコマンドを実行しました。 2テーブル間のエントリの総数は、私はまた、私は私が作成したテーブルを持っているエントリの数を印刷することだし、それは私が欠落しているかもしれないものか、私がやっているものを0

に任意のアイデアを示しています3です。違う?

EDIT: 私はHerokuののDBは、すでに私は移行走っschema_migrationsモーメントを有する、上記を考え出しました。

新しい問題:誰もが私はHerokuのDBにプッシュされることから、特定のテーブルからデータを除外することができる方法を知っています。この場合除外するテーブルはschema_migrationsになります。

あまり良くない解決: 私はグーグルで回り、他の誰かが同じ問題を抱えていました。彼はzschema_migrationsschema_migrationsテーブルの命名提案しました。このようにして、他のテーブルのデータは最後のテーブルで失敗するまで正しくプッシュされます。それはかなり悪い解決策ですが、当分の間は行います。

よりよい解決策は、データベースから特定のテーブルをリセットすることができ、既存のRailsコマンドを使用するであろう。私はRakeがそれを行うことができるとは思わない。

+0

なぜこのようにプロダクションアプリにデータをプッシュしようとしていますか? –

+0

私のサイトはコンテンツによって駆動されます。時には私はそれをライブをプッシュする前に私のローカルのdevサーバにどのように表示されるのか見たいと思う。 Herokuにデータを送ることは、彼らの文書で示されるようにサポートされています:http://docs.heroku.com/taps –

+0

ugh。ちょうど同じ問題を打つ。 –

答えて

0

これは、あなたが取得しているエラーに基づいて推測のようなものであるが、それはスキーマとデータをつかむようpushが見えます。私は空のデータベースにプッシュしようとします。

+0

何が起こっているか把握するのに役立ちます。最初に 'db:migrate'を実行すると、' schema_migrations'テーブルがHeroku DB上に作成されます。ローカルのデータをプッシュしようとすると、ローカルの 'schema_migrations'にある値がHerokuの複製であるため、失敗します。私は今、スキーマとデータを 'schema_migrations'テーブルから取り除く方法を知る必要があります。 –

+0

db:pushを使用すると、データベース全体が作成されると思います。つまり、db:migrateを実行する必要はありません。この場合、Herokuアプリケーションを作成した直後のことを意味します。 –

+0

私はそれを試みましたが、スキーマがまだherokuサーバー上に作成されていないという理由で、移行の実行が最初のステップであるようだと不平を言っています。 –

1

つの可能なオプション:

  1. heroku宝石との両方のオープンソースです(それがデータベースを同期するために使用しています)taps宝石 - あなたは、それらをフォーク除くテーブルをサポートするために、タップクライアントAPIを変更することができその新しいオプションを使用するようにヒーローの宝石を変更してください。

  2. pgdumpを使用してschema_migrationsテーブルをバックアップし、そのテーブルを削除し、データベースheroku pushを実行してからテーブルをリロードするラッパースクリプトを作成できます。

0

私はちょうど彼らの新しい竹サーバー上のherokuにRails 3ベータ版アプリを配備しました。私は今やっによってHerokuのデータベースへの私の地元のdevのマシンからのデータをアップロードすることができます。データは、その後、適切にHerokuのデータベースに伝播される

heroku rake db:fixtures:load test/fixtures/my_model.yml 

。私は特定のデータファイルを指定しましたが、自動的に他のyamlファイルからデータをプッシュします。おそらく私のモデル関係と関係があります。

0

データベースが同期していた場合は、常に特定のテーブルから

HerokuのDBを/プルをプッシュするに

heroku db:reset 
関連する問題