Karena beberapa masalah penerapan, saya berhenti melacak schema.rb di git. Entah bagaimana saya telah mengisi ini dan di suatu tempat di sepanjang jalan file schema.rb saya telah menghilang.
Apakah ada cara regenerasi schema.rb dari database atau dari migrasi? Saya lebih suka tidak kehilangan data yang ada.
rake db:schema:dump
di rel 2.0Cermat,
akan membuang skema DB saat ini DARI DB . Ini berarti bahwa jika Anda membuat perubahan pada migrasi Anda, mereka TIDAK akan tercermin dalam file schema.rb yang bukan yang Anda inginkan dari IMO.
Jika Anda ingin membuat kembali skema dari migrasi, lakukan hal berikut:
sumber
rake db:schema:dump
perintah.Saya pikir ini masih berlaku di Rails 3 - itu meregenerasi schema.rb dari database.
sumber
RAILS 5 Way:
atau jika Anda Encounter Gem :: LoadError lalu:
catatan:
dalam rails 5 direkomendasikan bahwa tugas dibuat / dijalankan dengan menggunakan
rails
alih-alihrake
, ini hanya untuk mengingat, tugas rails dihasilkan dari ekstensi.rake
lihat dilib/tasks/myTask.rake
. yang berarti tugas ini juga dapat dieksekusi dengan memprioritaskanrake
.sumber
Jika Anda membuat ulang
schema.rb
secara lokal, Anda seharusnya baik-baik saja. Itu hanya memegang representasi dari struktur tabel database Anda. Data itu sendiri tidak terdapat dalam file ini.Untuk membuat ulang
schema.rb
file Anda , jalankan:Maka cukup komit
schema.rb
file baru dan Anda harus dalam kondisi baik!sumber
Langsung dari file schema.rb itu sendiri:
Jadi JANGAN melakukan saran
rake db:migrate
, yang disarankan dalam - pada saat penulisan ini - jawaban berperingkat terendah.sumber
Saya juga memiliki masalah serupa di mana skema lama saya tidak menyegarkan bahkan jika saya menghapus migrasi.
Jadi, yang saya lakukan adalah menjatuhkan semua tabel yang ada di database dan memigrasikannya kembali. Kemudian menjalankan perintah "db: schema: load" memberi saya schema.rb baru.
sumber