Restablezca la base de datos (purgue todo), luego inicialice una base de datos

159

¿Hay un comando de rastrillo para borrar los datos en las tablas de la base de datos?

¿Cómo creo un script db: seed para completar previamente los datos en mis tablas?

Blankman
fuente

Respuestas:

160

Puede eliminar todo y volver a crear la base de datos + semillas con ambos:

  1. rake db:reset: cargas de schema.rb
  2. rake db:drop db:create db:migrate db:seed: cargas de migraciones

Asegúrese de no tener conexiones a db (servidor rails, cliente sql ...) o el db no se caerá.

schema.rb es una instantánea del estado actual de su base de datos generada por:

rake db:schema:dump
laffuste
fuente
Gracias por recordarles a las personas que apaguen los servidores para asegurarse de que la base de datos se descarte correctamente.
aardvarkk
6

Si no tiene ganas de soltar y recrear todo el shebang solo para volver a cargar sus datos, puede usar MyModel.destroy_all(o delete_all) en el archivo seed.db para limpiar una tabla antes de que sus MyModel.create!(...)declaraciones carguen los datos. Luego, puede rehacer la db:seedoperación una y otra vez. (Obviamente, esto solo afecta a las tablas en las que ha cargado datos, no al resto).

Hay un "truco sucio" en https://stackoverflow.com/a/14957893/4553442 para agregar una operación de "eliminación de semillas" similar a la migración hacia arriba y hacia abajo ...

Tom Hundt
fuente
inteligente, recrear todo desde cero cada vez me llevó mucho tiempo
m02ph3u5
5

A partir de Rails 5, la rakeherramienta de línea de comandos tiene un alias como railsahora

rails db:reset en vez de rake db:reset

funcionará igual de bien

DazBaldwin
fuente
0

Puede usarlo rake db:resetcuando desee soltar la base de datos local y comenzar de nuevo con los datos cargados desde db/seeds.rb. Este es un comando útil cuando todavía está calculando su esquema, y ​​a menudo necesita agregar campos a los modelos existentes.

Una vez que se usa el comando de reinicio, hará lo siguiente: Descartar la base de datos: rake db:drop Cargar el esquema: rake db:schema:load Sembrar los datos:rake db:seed

Pero si desea eliminar por completo su base de datos, puede usarla rake db:drop. Eliminar la base de datos también eliminará cualquier conflicto de esquema o datos incorrectos. Si desea conservar los datos que tiene, asegúrese de hacer una copia de seguridad antes de ejecutar este comando.

Este es un artículo detallado sobre los comandos de base de datos de rastrillo más importantes .

Nesha Zoric
fuente