Ripristina il database (elimina tutto), quindi esegui il seeding di un database


159

Esiste un comando rake per cancellare i dati nelle tabelle del database?

Come faccio a creare uno script db: seed per precompilare i dati nelle mie tabelle?

Risposte:



160

Puoi eliminare tutto e ricreare database + seed con entrambi:

  1. rake db:reset: carica da schema.rb
  2. rake db:drop db:create db:migrate db:seed: carichi dalle migrazioni

Assicurati di non avere connessioni a db (rails server, sql client ..) altrimenti il ​​db non cadrà.

schema.rb è un'istantanea dello stato corrente del database generato da:

rake db:schema:dump

Grazie per aver ricordato alle persone di spegnere tutti i server per assicurarsi che il DB venga eliminato correttamente.
aardvarkk,

6

Se non hai voglia di abbandonare e ricreare l'intero shebang solo per ricaricare i tuoi dati, potresti usare MyModel.destroy_all(o delete_all) nel file seed.db per ripulire una tabella prima che le tue MyModel.create!(...)istruzioni caricino i dati. Quindi, è possibile ripetere l' db:seedoperazione più e più volte. (Ovviamente, ciò influisce solo sulle tabelle in cui hai caricato i dati, non su tutti gli altri.)

C'è un "trucco sporco" su https://stackoverflow.com/a/14957893/4553442 per aggiungere un'operazione di "de-seeding" simile alla migrazione su e giù ...


intelligente, ricreare ogni cosa da zero ogni volta ci è voluto molto
m02ph3u5

5

A partire da Rails 5, lo rakestrumento da riga di comando è stato modificato in questo railsmodo

rails db:reset invece di rake db:reset

funzionerà altrettanto bene


0

È possibile utilizzare rake db:resetquando si desidera eliminare il database locale e ricominciare da capo con i dati caricati db/seeds.rb. Questo è un comando utile quando stai ancora cercando di capire il tuo schema e spesso devi aggiungere campi ai modelli esistenti.

Una volta utilizzato il comando di ripristino, eseguirà le seguenti operazioni: Elimina il database: rake db:drop Carica lo schema: rake db:schema:load Semina i dati:rake db:seed

Ma se vuoi eliminare completamente il tuo database puoi usarlo rake db:drop. La caduta del database rimuoverà anche eventuali conflitti di schema o dati errati. Se si desidera conservare i dati in proprio possesso, assicurarsi di eseguirne il backup prima di eseguire questo comando.

Questo è un articolo dettagliato sui più importanti comandi del database rake .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.