2011-11-17 20 views
30

Cuando trato de ejecutar:Ejecución de rake db: caer db: crear db: migrate en Heroku Cedar pila

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

me sale el error:

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

Estoy en la pila Heroku Cedar . ¿Puedo dejar bases de datos en Heroku?

Gracias!

John comandos

+0

Aquí es una respuesta hasta la fecha: http://stackoverflow.com/a/13347768/1417223 –

Respuesta

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

sí, tiene que escribir 'heroku pg: restablecer SHARED_DATABASE' continuación, escribir el nombre de la aplicación en el indicador cuando pedido – stephenmurdoch

+16

esto ahora ha cambiado a 'heroku pg: reset DATABASE_URL --confirm nameofapp' - ymmv – stephenmurdoch

+0

Tenga en cuenta también con la gema (ahora obsoleta) Heroku,' heroku pg: reset DATABASE_URL' también eliminará su esquema, a pesar de 'heroku help pg 'documentos que indican" Eliminar todos los datos en la base de datos ". Sin embargo, en el caso del OP eso es lo que se quiere ('rake db: drop'). –

9

directamente destructivos (gota y crear ) no están permitidos en heroku. Pero si está bien con perder todos los datos, puede restablecer la base de datos con pg:reset.

heroku pg:reset DATABASE_URL 

Cualquier otro cambio se debe hacer con db:migrate. Esto asegura la consistencia del estado de la base de datos.


Si sus migraciones no se ejecutan a través de la pila completa ya que puede utilizar db:schema:load. Esto carga el esquema directamente desde schema.rb. Pero tenga en cuenta que esto también puede ser destructivo si create_table utiliza los parámetros force: true o force: :cascade.

heroku run rake db:schema:load 
Cuestiones relacionadas