2011-11-17 17 views
30

Kiedy próbuję uruchomić:Uruchomienie rake db: drop db: create db: migrować na Heroku Cedar stosie

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

pojawia się błąd:

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"> 

jestem na stosie Heroku Cedar . Czy mogę upuszczać bazy danych na Heroku?

Dzięki!

John

+0

Oto najświeższe odpowiedź: http://stackoverflow.com/a/13347768/1417223 –

Odpowiedz

43

The rake db:reset task is not supported. Heroku apps do not have permission to drop and create databases. Use the heroku pg:reset command instead.

+4

tak, trzeba wpisać 'Heroku pg: reset SHARED_DATABASE' a następnie wprowadzić nazwę aplikacji w wierszu, gdy zadał – stephenmurdoch

+16

to teraz zmieniono na 'heroku pg: reset DATABASE_URL --confirm nameofapp' - ymmv – stephenmurdoch

+0

Uwaga również z (teraz przestarzałym) klejnotem Heroku,' heroku pg: reset DATABASE_URL' również usunie twój schemat pomimo 'pomocy Heroku pg 'dokumenty wskazujące" Usuń wszystkie dane w bazie danych ". Jednak w przypadku OP chodzi o to, co jest potrzebne ('rake db: drop'). –

9

Bezpośrednio destrukcyjne polecenia (drop i tworzyć) nie są dozwolone na Heroku. Ale jeśli masz problem z utratą wszystkich danych, możesz zresetować bazę danych pod numerem pg:reset.

heroku pg:reset DATABASE_URL 

Każda inna zmiana powinna być wykonana z db:migrate. Zapewnia to spójność stanu bazy danych.


Jeśli migracje nie są uruchamiane poprzez pełne stosie już można użyć db:schema:load. To ładuje schemat bezpośrednio z schema.rb. Należy jednak pamiętać, że może to być również destrukcyjne, jeśli create_table używa parametrów force: true lub force: :cascade.

heroku run rake db:schema:load 
Powiązane problemy