que soy un idiota ... la pata de una migración en rieles:Rieles: la forma de revertir una migración fallida
migraciones de pensamiento funcionarían como generadores modelo (utilizando references:modelname
) hice lo siguiente:
$ rails g migration add_event_to_photos references:event
que creó la migración
class AddEventToPhotos < ActiveRecord::Migration
def change
add_column :photos, :references, :event
end
end
Y ahora mi base de datos de desarrollo (SQLite3) tiene un references
columna del tipo event
en la tabla photos
.
Y mi schema.rb tiene una línea en el medio diciendo:
# Could not dump table "photos" because of following StandardError
# Unknown type 'event' for column 'references'
rake db:rollback
es impotente frente a esto:
$ rake db:rollback
== AddEventToPhotos: reverting ===============================================
-- remove_column("photos", :references)
rake aborted!
An error has occurred, this and all later migrations canceled:
undefined method `to_sym' for nil:NilClass
Por lo tanto, la forma de hacer retroceder y mantener los datos de mi desarrollo en el ¿base de datos? Incluso me encantaría destrozar la mesa de fotos si esa es mi única opción ... pero no quiero tener que reconstruir todo. ¿Qué hacer?
btw- para cualquiera que esté leyendo esto para cometer el mismo error estúpido ... ¡no! Utilice el generador de la migración correcta:
$ rails g migration add_event_to_photos event_id:integer
Esto parece mover el contador de reversión * (o lo que sea que realice un seguimiento de las migraciones) * de nuevo, pero mantiene la columna de 'referencias' de tipo' evento' en la base de datos que impide que 'schema.rb' se actualice porque' No se pudo volcar la tabla "fotos" ... ' – Meltemi
ah, esto es más complicado de lo que me di cuenta. ¿Puedes simplemente eliminar las líneas de schema.rb ahora que el número de esquema se ha revertido? – numbers1311407
sí. pero entonces, que yo sepa, no puedo 'rakear db: schema: load' porque el esquema está fuera de sintonía ... – Meltemi