2

コマンドheroku rake db:migrate. Database Import/Exportに関するドキュメントも読みました。そのドキュメントは、実際のデータをローカル開発 DB から Heroku の DB にプッシュすることを指していますか? それを実現するために、ファイル内の何かを変更する必要がありますdatabase.ymlか?

次のコマンドを実行しました。

heroku db:push

エラーが発生しています:

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 つはアプリ用に作成し、もう 1 つはschema_migrations. 2 つのテーブルの合計エントリ数は 3 です。また、作成したテーブルにあるエントリの数も出力していますが、0 と表示されています。

私が見逃している可能性のあるものや間違っていることはありますか?

編集: 上記を理解しました.HerokuのDBschema_migrationsには、移行を実行した瞬間がすでにあります.

新しい質問:特定のテーブルのデータが Heroku DB にプッシュされないようにする方法を知っている人はいますか? この場合に除外するテーブルは になりますschema_migrations

あまり良い解決策ではありません:私はグーグルで検索しましたが、他の誰かが同じ問題を抱えていました。彼は、schema_migrationsテーブルにという名前を付けることを提案しましたzschema_migrations。このようにして、最後のテーブルで失敗するまで、他のテーブルからのデータが適切にプッシュされます。それはかなり悪い解決策ですが、当分の間はうまくいきます。

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

4

5 に答える 5

1

2つの可能なオプション:

  1. herokugemtapsgem(データベースの同期に使用)はどちらもオープンソースです。それらをフォークし、tapsクライアントAPIを変更して、プッシュからのテーブルの除外をサポートしてから、herokugemを変更してその新しいオプションを使用できます。

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

于 2009-08-26T03:51:28.673 に答える
0

Rails3ベータアプリを新しいbambooサーバーのherokuにデプロイしました。これで、次の手順を実行して、ローカル開発マシンからherokuデータベースにデータをアップロードできます。

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

その後、データはHerokuデータベースで適切に伝播されます。特定のデータファイルを指定した場合でも、他のyamlファイルからデータが自動的にプッシュされます。それはおそらく私のモデルの関係と関係があります。

于 2010-03-21T20:27:49.077 に答える
0

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

于 2009-08-24T03:12:52.190 に答える
0

データベースが同期していない場合は、プッシュする前にいつでも Heroku データベースをリセットできます。

heroku db:reset
于 2010-07-25T16:30:17.237 に答える
0

特定のテーブルからプッシュ/プルするには

heroku db:pull --tables ログ、タグ

http://blog.heroku.com/archives/2010/4/21/supporting_big_data_part_1

于 2010-08-22T19:38:41.270 に答える