Ok, jadi ini sepertinya hal yang konyol untuk ditanyakan, dan saya yakin saya melewatkan sesuatu di suatu tempat.
Bagaimana Anda melakukan migrasi mundur menggunakan Selatan di Django?
Jadi saya telah mengubah model saya, membuat migrasi dengan schemamigration
, menjalankan migrasi denganmigrate
, dan sekarang saya menyadari bahwa itu bukan yang saya inginkan dan saya ingin kembali seperti sebelumnya.
Pendek mengedit tabel db secara manual dan menghapus file migrasi, bagaimana cara saya mengembalikan migrasi? Saya menemukan referensi untuk migrasi mundur menggunakan Selatan melalui Google, tetapi belum menemukan contoh kode yang solid untuk itu.
Adakah yang bisa membantu?
django
migration
django-south
Ruiwen
sumber
sumber
Jawaban:
Anda perlu mengetahui jumlah migrasi tepat sebelum yang ingin Anda putar kembali.
Aplikasi Anda harus memiliki direktori migrasi, dengan file-file di dalamnya bernama like
Biasanya, ketika Anda menjalankan
./manage.py migrate your_app
, South menjalankan semua migrasi baru, secara berurutan. (Ini terlihat pada tabel database untuk memutuskan mana yang 'baru').Namun, Anda juga dapat menentukan migrasi dengan angka, dan Selatan akan memigrasi basis data Anda, baik maju atau mundur , untuk membawanya ke titik itu. Jadi, dengan contoh file di atas, jika Anda telah bermigrasi hingga 0003, dan Anda ingin menjalankan 0003 secara terbalik (membatalkannya, secara efektif), Anda akan menjalankan
Selatan akan melihat database, menyadari bahwa ia telah menjalankan 0003, dan menentukan bahwa ia harus menjalankan migrasi terbalik untuk 0003 untuk kembali ke 0002.
sumber
Kalau-kalau ada seseorang (seperti saya) bertanya-tanya bagaimana cara bermigrasi dari awal (0001) :
keluaran:
"nol" adalah keadaan khusus sebelum migrasi apa pun.
Referensi: http://south.aeracode.org/docs/commands.html
sumber
migrate 0000
tidak berhasil. Tentang migrasi palsu, ya, Anda mungkin memerlukannya, jika misalnya Anda hanya perlu membatalkan migrasi awal (mungkin salah), tetapi sejarah migrasi berpikir, bahwa migrasi ini tidak pernah terjadi.Tambahkan nama migrasi di akhir parameter:
sumber
00xx
- cukup. Saat meningkatkan dan menguji migrasi Anda dapat memiliki kedua perintah di riwayat: maju (tanpa argumen), mundur dengan nomor negara sebelumnya.