2017-07-14 15 views
0

私は、PostgreSQLにsqlite3のから私のRoRのアプリを切り替えるしようとしている、とHerokuのにデプロイしてい移行エラーが

が、これは私である(Herokuのはsqliteのとよく働くしないようです)今database.ymlの

default: &default 
adapter: sqlite3 
pool: 5 
timeout: 5000 

development: 
<<: *default 
database: db/development.sqlite3 


test: &test 
<<: *default 
database: db/test.sqlite3 

production: 
<<: *default 
database: db/production.sqlite3 

cucumber: 
<<: *test 

、のpostgresqlへの切り替えは、私は宝石 'PG'

と宝石 'sqlite3の' に置き換える必要がありgemfileで

default: &default 
adapter: postgresql 
encoding: unicode 
pool: 5 
timeout: 5000 

development: 
<<: *default 
database: development 


test: &test 
<<: *default 
database: test 

production: 
<<: *default 
database: production 

cucumber: 
<<: *test 

です

タイピングレールのDB:エラーを移行することがdevelopmentと呼ばれるデータベースは、ローカルシステムで作成されていないようです

ActiveRecord::NoDatabaseError: FATAL: database "development" does not exist 
+0

heroku/に使用されていますヘロクで? –

答えて

1

です。

rake db:createコマンドで移行を実行する前に、データベースを作成する必要があります。

@Micael Nussbaumerが言ったようにその後、あなたは環境 例に接頭辞としてアプリ名を使用してデータベースに名前を付ける方が良い、rake db:migrate

で移行を実行することができますtestapp_development

+0

それは、ありがとう! –

+0

あなたは大歓迎です.. –

1

私は名前は、アプリケーション名(RoR PGの標準)の前に付加された環境名であると考えてください。 developmentの代わりに、yourappname_development,productionyourappname_productionなど ローカルでは、PGアプリケーションが適切に設定されている限り同じである必要があります。

EDIT: 私はエラーだけではHerokuの上だと思ったが、それがローカルだならば、あなたがデータベースユーザーを作成し、ローカルマシン上でPGをインストールする必要があります(これは一回のセットアップである)と、次に、 rake db:create を実行して、その後に移行することによって、(PGを実行する各アプリケーションで実行される)あなたのレールアプリケーションにデータベースを作成します。またはrake db:setup

ヘロクでは、データベースを作成する必要はありませんが、app.jsonマニフェストの「デプロイ後」フックで指定しない限り(移行する必要があるたびに)、マイグレーションを実行する必要があります実行するrake db:migrate

1

ローカルで試している場合は、rake db:createの後にrake db:migrateを実行してください。

あなたのプロジェクトに合わせてデータベースの名前を変更することをお勧めします。

1

はいherokuはsqliteで動作しません。

英字ではpgデータベースのみが使用されます。

だから、コードを使ってGemfileを変更します。コードの上に使用

gem 'pg', group: :production 
gem 'sqlite3', group: :development 

は、あなたがローカルにsqliteデシベルで動作することができますし、pgデシベルでは、ローカルまたはでこのエラーを受けている