web-dev-qa-db-ja.com

Heroku Cedarスタックでrake db:drop db:create db:migrateを実行する

実行しようとすると:

heroku run rake db:drop db:create db:migrate

エラーが発生します:

Running rake db:drop attached to terminal... up, run.5
Couldn't drop adsfsadfas : #<ActiveRecord::StatementInvalid: PGError: ERROR:  must be owner of database adsfsadfas
: DROP DATABASE IF EXISTS "adsfsadfas">

Heroku Cedarスタックにいます。 Herokuでデータベースを削除することはできますか?

ありがとう!

ジョン

33
John

Rake db:resetタスクはサポートされていません。 Herokuアプリには、データベースを削除および作成する権限がありません。使用 heroku pg:resetコマンドの代わりに。

49
Francisco Soto

直接破壊的なコマンド(dropおよびcreate)はherokuでは許可されていません。ただし、すべてのデータを失うことに問題がなければ、pg:resetを使用してデータベースをリセットできます。

heroku pg:reset DATABASE_URL

その他すべての変更はdb:migrateで行う必要があります。これにより、データベースの状態の一貫性が保証されます。


移行がフルスタックで実行されなくなった場合は、db:schema:loadを使用できます。これは、スキーマをschema.rbから直接ロードします。ただし、create_tableがパラメータforce: trueまたはforce: :cascadeを使用している場合、これも破壊的である可能性があることに注意してください。

heroku run rake db:schema:load
13
schmijos