Atur ulang basis data (bersihkan semua), lalu seed sebuah basis data

159

Apakah ada perintah rake untuk menghapus data dalam tabel database?

Bagaimana cara membuat skrip db: seed untuk mengisi data ke tabel saya?

Blankman
sumber

Jawaban:

160

Anda dapat menghapus semuanya dan membuat ulang database + seed dengan keduanya:

  1. rake db:reset: banyak dari schema.rb
  2. rake db:drop db:create db:migrate db:seed: memuat dari migrasi

Pastikan Anda tidak memiliki koneksi ke db (server rails, sql client ..) atau db tidak akan jatuh.

schema.rb adalah snapshot dari kondisi saat ini dari database Anda yang dihasilkan oleh:

rake db:schema:dump
nafsu birahi
sumber
Terima kasih telah mengingatkan orang untuk mematikan server untuk memastikan DB dijatuhkan dengan benar.
aardvarkk
6

Jika Anda merasa tidak ingin menjatuhkan dan membuat ulang seluruh situs hanya untuk memuat ulang data Anda, Anda bisa menggunakan MyModel.destroy_all(atau delete_all) di file seed.db untuk membersihkan tabel sebelum MyModel.create!(...)pernyataan Anda memuat data. Kemudian, Anda dapat mengulangi db:seedoperasi berulang kali. (Jelas, ini hanya memengaruhi tabel yang telah Anda masukkan data, bukan sisanya.)

Ada "hack kotor" di https://stackoverflow.com/a/14957893/4553442 untuk menambahkan operasi "penghilangan benih" yang mirip dengan migrasi naik turun ...

Tom Hundt
sumber
pandai, menciptakan kembali segala sesuatu dari awal, setiap kali butuh waktu lama untukku
m02ph3u5
5

Pada Rails 5, rakealat commandline telah alias seperti railssekarang

rails db:reset dari pada rake db:reset

akan bekerja dengan baik

DazBaldwin
sumber
0

Anda dapat menggunakan rake db:resetsaat Anda ingin menjatuhkan basis data lokal dan mulai dengan data baru dari mana db/seeds.rb. Ini adalah perintah yang berguna ketika Anda masih mencari tahu skema Anda, dan sering perlu menambahkan bidang ke model yang ada.

Setelah perintah reset digunakan, ia akan melakukan hal berikut: Drop database: rake db:drop Load the schema: rake db:schema:load Seed the data:rake db:seed

Tetapi jika Anda ingin sepenuhnya menjatuhkan database Anda, Anda dapat menggunakan rake db:drop. Menjatuhkan basis data juga akan menghapus konflik skema atau data buruk. Jika Anda ingin menyimpan data yang Anda miliki, pastikan untuk mencadangkannya sebelum menjalankan perintah ini.

Ini adalah artikel terperinci tentang perintah database rake paling penting .

Nesha Zoric
sumber