2017-04-24 14 views
0

最近私はherokuにウェブサイトを展開しましたが、データベースに問題があります。私はレールにルビーを使用しています。ローカルデータベースを初めて作成したときに私はSQLiteを使用しました。ヒロクにデプロイするとき、データベースをPostgresに変更しなければならず、いくつかの移行ファイルが削除され、1回の移行に変更されました。今、localhostでpostgresデータベースを実行すると、データベースのすべての列が表示されますが、herokuのページにアクセスすると、列の1つが表示されません。Rails:開発と生産の移行とデータベースの違い

私のローカルコンソールとherokuコンソールの両方をチェックして、データベースが異なるようになりました。ローカルコンソールにはデータベースのすべての列が含まれており、herokuコンソールにはデータベース内の列が1つもありませんが、他の列はすべて正しく生成されています。私はherokuでrakeタスクを実行しようとしていて、herokuに最近の変更をプッシュしました。

データベースに不足している列を追加するために追加の移行を追加しようとしましたが、移行を実行しようとするたびに属性が既に存在することがわかります。私が得ることができるどんな助けもありがとう!

+2

herokuでdbを設定するために 'rake db:schema:load'を使用し、' schema.rb'ファイルを使用してすべてを正しく設定します。 – Iceman

+2

http://guides.rubyonrails.org/active_record_migrations.html – max

+0

@Icemanありがとうございます!それは完璧に働いた! – user7077886

答えて

2

Herokuの上にデータベースをセットアップするための最良の方法はguides on migrations

移行から

rake db:schema:load 

であり、彼らが得るような強大な、データベーススキーマの信頼できるソース ではありません。その役割は、Active Recordがデータベースを調べることによって生成するdb/schema.rbファイルまたは SQLファイルになります。それらは は編集できないように設計されていますが、データベースの現在の状態 を表しています。

移行履歴全体を再生して、 という新しいインスタンスをアプリにデプロイする必要はありません(エラーが発生しやすくなります)。 のほうがはるかに簡単で、現在の スキーマの説明をデータベースにロードするだけです。

関連する問題