ruby-on-rails - remove - rollback migration rails
La migraciĆ³n de rieles no cambia schema.rb (6)
De la documentation :
La tarea rake db:reset
eliminará la base de datos, la recreará y cargará el esquema actual en ella.
Esto no es lo mismo que ejecutar todas las migraciones. Solo utilizará el contenido del archivo schema.rb actual. Si una migración no se puede revertir, es posible que ''rake db: reset'' no le ayude. Para obtener más información sobre el volcado del esquema, consulte ''Esquema de volcado y usted''.
Así que rake db:reset
=> db:drop db:create db:schema:load db:seed
Para ejecutar todas las migraciones, use: rake db:drop db:create db:migrate
O db:migrate:reset
=> rake db:drop db:create db:migrate
Tengo una migración de rieles que no se está aplicando a mi schema.rb. La migración debe crear una tabla:
class CreateUserGraphs < ActiveRecord::Migration
def change
create_table :user_graphs do |t|
t.string :name
t.string :content
t.integer :user_id
t.string :type_id
t.integer :upload_id
t.timestamps
end
add_index :user_graphs, [:user_id, :created_at]
end
end
Hice db: reset. Luego probé rake db: migrate: up VERSION = 123123123 (este es el número de migración). Estoy en mi entorno "dev".
¿Por qué la migración no afecta a schema.rb?
Encontré una manera de obtener una descripción de error. ejecutó rake db: migrate: reset y recibido
`SQLite3::SQLException: Cannot add a NOT NULL column with default value NULL: ALTER TABLE "rooms" ADD "priority" integer NOT NULL/usr/local/rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.9/lib/sqlite3/database.rb:91:in `initialize`''
Las ''versiones'' de las migraciones se realizan a través de marcas de tiempo. Rails comprueba qué migraciones necesita ejecutar al comparar la marca de tiempo de la última migración ejecutada y ver si hay alguna más reciente.
Si la versión de su nueva migración es 123123123
, no se ejecutará ya que ese número no es mayor que la marca de tiempo actual (por ejemplo, 20131209170300
).
Tuve el mismo problema ... resultó que fue porque edité el nombre de mi archivo de migración para que se vea más limpio. Asegúrate de no eliminar la marca de tiempo en el título del archivo de migración como lo hice yo.
Eliminé el archivo de migración, el modelo, el controlador y las pruebas asociadas y volví a generar el controlador y el modelo que solucionó el problema.
Tuve el mismo problema. Estoy trabajando en un entorno de desarrollo (con Passenger y Apache). Los entornos de producción y desarrollo utilizan la misma base de datos.
Cuando ejecuto rake db:migrate
, se cambió la db, pero el esquema no se actualizó. Luego ejecuto rake db:migrate RAILS_ENV=development
, y ahora el esquema se actualizó.
Parece que los rieles / rastrillos se confunden con mi entorno. El pasajero establece un entorno de desarrollo para este sitio, pero rake about
dice "Producción ambiental".
Primero intentas bajar tu migración
rake db: migrate: down VERSION = 20180605141404 # "VERSION = 20180605141404 su versión de migración"
Y de nuevo sube tu migración.
rake db: migrate: up VERSION = 20180605141404 # "VERSION = 20180605141404 su versión de migración"