run remove rails migrations data create column ruby-on-rails ruby-on-rails-4 database-migration rails-migrations

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

Reference

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"