Pregunta Purgar o volver a crear una base de datos de Ruby on Rails


Tengo una base de datos dev Ruby on Rails llena de datos. Quiero eliminar todo y reconstruir la base de datos. Estoy pensando en usar algo como:

rake db:recreate

es posible?


516
2017-11-07 01:23


origen


Respuestas:


Conozco dos formas de hacer esto:

Esto restablecerá su base de datos y volverá a cargar su esquema actual con todos:

rake db:reset db:migrate

Esto destruirá su db y luego lo creará y luego migrará su esquema actual:

rake db:drop db:create db:migrate

Todos los datos se perderán en ambos escenarios.


966
2017-11-07 01:40



En Rails 4, todo lo que se necesita es

$ rake db:schema:load

Eso eliminaría todo el contenido de su base de datos y volvería a crear el esquema desde su archivo schema.rb, sin tener que aplicar todas las migraciones una por una.


143
2018-01-20 04:09



Yo uso el siguiente trazador de líneas en la Terminal.

$ rake db:drop && rake db:create && rake db:migrate && rake db:schema:dump && rake db:test:prepare

Puse esto como un alias de shell y lo llamé remigrate

Por ahora, puedes "encadenar" fácilmente las tareas de Rails:

$ rake db:drop db:create db:migrate db:schema:dump db:test:prepare # db:test:prepare no longer available since Rails 4.1.0.rc1+

38
2017-11-07 01:33



Actualización: con la llegada de Rails 5, se podrá acceder a este comando a través de este comando:

raíles db: purgar db: crear db: migrar RAILS_ENV = prueba


A partir de la versión más reciente de Rails 4.2 ahora puede ejecutar:

rake db:purge 

Fuente: cometer

# desc "Empty the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV it defaults to purging the development and test databases."
  task :purge => [:load_config] do
    ActiveRecord::Tasks::DatabaseTasks.purge_current
  end

Se puede usar en conjunto como se mencionó anteriormente:

rake db:purge db:create db:migrate RAILS_ENV=test

30
2018-01-02 04:30



Dependiendo de lo que quieras, puedes usar ...

rake db:create

... para construir la base de datos desde cero desde config/database.yml, o ...

rake db:schema:load

... para construir la base de datos desde cero desde su schema.rb archivo.


27
2017-11-07 01:29



Simplemente emita la secuencia de los pasos: suelte la base de datos, vuelva a crearla de nuevo, migre datos, y si tiene semillas, siembre la base de datos:

rake db:drop db:create db:migrate db:seed

Dado que el entorno predeterminado para rake es desarrollo, en caso de que si vea la excepción en las pruebas de especificaciones, debe volver a crear db para el prueba ambiente de la siguiente manera:

RAILS_ENV=test rake db:drop db:create db:migrate

En la mayoría de los casos, la base de datos de prueba se está sembrando durante los procedimientos de prueba, por lo que db:seed no es necesario pasar la acción de tarea. De lo contrario, deberá preparar la base de datos:

rake db:test:prepare

o

RAILS_ENV=test rake db:seed

Además, para usar el recrear tarea que puede agregar a Rakefile el siguiente código:

namespace :db do
   task :recreate => [ :drop, :create, :migrate ] do
      if ENV[ 'RAILS_ENV' ] !~ /test|cucumber/
         Rake::Task[ 'db:seed' ].invoke
      end
   end
end

Luego emita:

rake db:recreate

11
2018-01-28 07:46



Desde la línea de comando ejecutar

rake db:migrate:reset

11
2017-11-25 12:58



Usa como

rake db:drop db:create db:migrate db:seed

Todo en una línea. Esto es más rápido ya que el entorno no se vuelve a cargar una y otra vez.

db: gota - Bajará la base de datos.

db: crear - creará una base de datos (host / db / password se tomará de config / database.yml)

db: migrar - ejecutará las migraciones existentes desde el directorio (db / migration /.rb) *.

db: semilla - ejecutará los datos de inicialización posibles desde el directorio (db / migration / seed.rb)..

Por lo general, prefiero:

rake db:reset

hacer todo de una vez

¡Aclamaciones!


11
2017-12-01 10:52



Puedes hacer manualmente:

rake db:drop
rake db:create
rake db:migrate

O solo rake db:reset, que ejecutará los pasos anteriores pero también ejecutará su db/seeds.rb archivo.

Un matiz añadido es que rake db:reset cargas directamente de su schema.rb archivo en lugar de ejecutar todos los archivos de migraciones de nuevo.

Sus datos quedan impactados en todos los casos.


8
2017-10-14 02:19