2011-11-17 103 views
30

當我嘗試運行:運行耙分貝:滴DB:創建分貝:遷移在Heroku上雪松堆棧

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的雪松堆棧。我可以在Heroku上刪除數據庫嗎?

謝謝!

約翰

+0

這是一個最新的答案:http://stackoverflow.com/a/13347768/1417223 –

回答

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

是啊,你需要鍵入'Heroku的PG:復位SHARED_DATABASE'然後輸入您的應用程序名稱在提示時問 – stephenmurdoch

+16

這現在已經改爲'heroku pg:reset DATABASE_URL --confirm nameofapp' - ymmv – stephenmurdoch

+0

還要注意(現在不贊成)Heroku gem,'heroku pg:reset DATABASE_URL'也會刪除你的schema,儘管'heroku help pg '表示「刪除數據庫中的所有數據」的文檔。雖然,在OP的情況下,這就是想要的('rake db:drop')。 –

9

直接破壞性命令(下降創建)不允許在Heroku。但是,如果您可以丟失所有數據,則可以使用pg:reset來重置數據庫。

heroku pg:reset DATABASE_URL 

每個其他的改變都應該用db:migrate完成。這確保了數據庫狀態的一致性。


如果您的遷移不再通過整個堆棧運行,則可以使用db:schema:load。這直接從schema.rb加載架構。但請注意,如果create_table使用參數force: trueforce: :cascade,這也可能具有破壞性。

heroku run rake db:schema:load