Cara mengembalikan hanya satu langkah menggunakan rake db: migrasi


196

Setelah menambahkan file migrasi di db/migratefolder dan menjalankan rake db:migrate, saya ingin kembali ke langkah sebelumnya, saya pikir menggunakan VERSION=nadalah cara yang tepat untuk melakukan itu, tetapi saya tidak tahu nilai yang benar dari n untuk digunakan. Apakah ada perintah untuk memeriksa nilai n saat ini?

Alangkah baiknya jika ada yang bisa memberikan instruksi lengkap tentang cara menggunakan rake db:migrate.

Jawaban:


355

Sebagai permulaan

rake db:rollback akan membuat Anda kembali satu langkah

kemudian

rake db:rollback STEP=n

Akan mengembalikan Anda nmigrasi di mana njumlah migrasi terbaru yang ingin Anda kembalikan.

Lebih banyak referensi di sini .


95

Kembalikan migrasi terbaru:

rake db:rollback

Kembalikan nmigrasi terbaru:

rake db:rollback STEP=n

Anda dapat menemukan instruksi lengkap tentang penggunaan tugas migrasi Rails untuk menyapu pada Rails Guide untuk menjalankan migrasi .


Inilah beberapa lagi:

  • rake db:migrate - Jalankan semua migrasi yang belum pernah berjalan
  • rake db:migrate VERSION=20080906120000 - Jalankan semua migrasi yang diperlukan (atas atau bawah) untuk mendapatkan versi yang diberikan
  • rake db:migrate RAILS_ENV=test - Jalankan migrasi di lingkungan yang diberikan
  • rake db:migrate:redo - Kembalikan satu migrasi dan jalankan lagi
  • rake db:migrate:redo STEP=n- Kembalikan nmigrasi terakhir dan jalankan lagi
  • rake db:migrate:up VERSION=20080906120000- Jalankan upmetode untuk migrasi yang diberikan
  • rake db:migrate:down VERSION=20080906120000- Jalankan downmetode untuk migrasi yang diberikan

Dan untuk menjawab pertanyaan Anda tentang dari mana Anda mendapatkan nomor versi migrasi dari:

Versi ini adalah awalan angka pada nama file migrasi. Misalnya, untuk bermigrasi ke versi 20080906120000 dijalankan

$ rake db:migrate VERSION=20080906120000

(Dari Menjalankan Migrasi di Panduan Rel)


2
Ketika rake db: rollback tidak berfungsi untuk mengembalikan migrasi yang paling baru, saya harus menggunakan rake db: migrasi VERSION = <tanggal versi terakhir kedua> dan itu bekerja dengan baik
Omni

8

Cara terbaik adalah menjalankan migrasi khusus lagi dengan menggunakan turun atau naik (di rel 4. Itu berubah)

rails db: migrate: up VERSION = timestamp

Sekarang bagaimana Anda mendapatkan cap waktu. Pergi ke jalan ini

/ db / bermigrasi

Identifikasi file migrasi yang ingin Anda kembalikan. Ambil cap waktu dari nama file itu.


Meskipun ini tidak menjawab pertanyaan, itu memang cara terbaik. Melangkah mundur dengan langkah-langkah dapat menyebabkan kesalahan, terutama ketika mengerjakan perangkat lunak dalam kelompok.
baja

5

Jika versinya adalah 20150616132425, maka gunakan:

rails db:migrate:down VERSION=20150616132425

1

Orang lain telah menjawab Anda cara mengembalikan, tetapi Anda juga bertanya bagaimana Anda dapat mengidentifikasi nomor versi migrasi.

  • rake db:migrate:status memberikan daftar versi, nama, dan status migrasi Anda (naik atau turun)
  • Anda juga dapat menemukan file migrasi, yang berisi cap waktu di nama file, yaitu nomor versi. Migrasi terletak di folder:/db/migrate

Omong-omong jika Anda menjalankan perintah status, Anda mungkin melihat baris seperti: ********** TANPA FILE ********** Migrasi tersebut tidak ada di cabang Anda saat ini jika Anda menggunakan git.
BjarneD
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.