2011-08-06 32 views
8

Estoy usando Ruby on Rails y ya no necesito mi tabla Order, así que la eliminé usando SQLite manager ... ¿Cómo puedo hacer que la eliminación de la tabla tenga lugar en heroku?Heroku Drop Table Rails Ayuda

EDITAR estoy consiguiendo el error

db/migrate/20110806052256_droptableorders.rb:10: syntax error, unexpected keyword_end, expecting $end 

Cuando funciono con el comando

class DropTableOrder < ActiveRecord::Migration 
    self.up 
     drop_table :orders 
    end 

    self.down 
     raise IrreversibleMigration 
    end 
end 

Respuesta

3

Basta con crear una migración de esta manera:

def self.up 
    drop_table :orders 
end 

def self.down 
    # whatever you need to recreate the table or 
    # raise IrreversibleMigration 
    # if you want this to be irreversible. 
end 

y luego hacer un heroku rake db:migrate la la próxima vez que presione sus cambios.

Es posible que desee volver a crear la tabla en SQLite para que también pueda ejecutar esta migración localmente.

+0

Me aparece un error. == DropTablesMigration: migrando ========================================= - drop_table (: orden) ¡rake abortado! Ocurrió un error, esta y todas las migraciones posteriores se cancelaron: PGEror: ERROR: tabla "orden" no existe : DROP TABLE "pedido". Pero mi orden de tabla aún existe – Jake

+0

@Jake: Lo siento, error tipográfico, debe ser ': orders' not': order'. –

+0

recreé el 'orden' de la tabla en mi servidor local e intenté eliminarlo usando su comando. puede por favor revisar una copia de seguridad en la parte superior para la edición que hice – Jake

21

En caso de que no desee crear una migración para soltar la tabla y no pueda deshacer las migraciones anteriores porque no desea perder los datos en las tablas creadas después de esa migración, puede usar los siguientes comandos en la consola heroku para colocar una tabla:

$ heroku console 
Ruby console for heroku-project-name 
>> ActiveRecord::Migration.drop_table(:orders) 

El comando anterior soltará la tabla de su base de datos heroku. Puede usar otros métodos como create_table, add_column, add_index, etc. en el módulo ActiveRecord :: Migration para manipular la base de datos sin crear y ejecutar una migración. Pero ten en cuenta que esto dejará un caos en la tabla schema_migrations creada por Rails para gestionar las versiones de migración.

Esto solo podría ser útil si su aplicación aún está en desarrollo y no quiere perder los datos que ha agregado en el servidor de transferencia remota en heroku.

+1

Lo encontré útil cuando estaba en desarrollo y estaba presionando/jalando a db y de alguna manera lo drenó y las migraciones estaban muriendo. Este comando funcionó como un amuleto, ¡gracias! – rtfminc

+0

¡Un gran consejo! Realmente tengo que leer la fuente Rails más a menudo – gcahill

+0

Eres tan rudo. +1 – Trip

6

ejecutarse después de 'abc' command.Here nombre de la aplicación es

heroku run console --app abc 

A continuación, utilice,

ActiveRecord::Migration.drop_table(:orders) 

Será eliminar la tabla 'orden'.