Salı, Aralık 3, 2024

Django’da Migrationlar Nasıl Sıfırlanır?

yüksek çözünürlüklü yeşil renkli orjinal django logosu

Uygulamanızda çokça migration dosyası olabilir, bu konuda korkmanıza veya gerilmenize gerek yok hiç bir sıkıntı çıkmaksızın kullanmaya devam edebilirsiniz. Testlerinizi çalıştırırken sadece süreyi uzatacaktır. ci/cd süreçlerinde bunu biraz iyileştirmek isterseniz kullanabilirsiniz ancak bence gerek yok.

Git kullanıyorsanız bu işlemi yaparken öyle fazla korkmanıza da gerek yok, sadece Migration ve gerekli dosyaları kaldıracağız sonrasında ise sıfırlayıp temiz bir sayfa açacağız.

Dosyaları kaldıralım hızlıca

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc"  -delete
Python

Sonrasında gidip veri tabanından kayıtlarını da sileceğiz, veri tabanı üzerinde bir oturum açmayın direk uygulama üzerinden python manage.py shell komutunu girerek bir python kabuk oturumu başlatın. ve aşağıdaki komutu çalıştırın.

from django.db.migrations.recorder import MigrationRecorder
MigrationRecorder.Migration.objects.all().delete()
Python

Şimdi her şey tamamlandığına göre temiz bir sayfa için migration oluşturma komutunu verelim.

python manage.py makemigrations
ShellScript

Şimdi oluşturduğunuz bu dosyalar üzerinde tekrar migrate işlemi yaparsanız hoş olmaz çünkü zaten bu değişiklikler veritabanında yer alıyor. O sebeple --fake komutu ile geçmiş gibi yapmamız gerekiyor ki temiz bir sayfa açmış olalım.

python manage.py migrate --fake-initial
ShellScript

Evet başarılı bir şekilde işlemimizi tamamladık, çok ama çok gerekmedikçe asla migration dosyalarında sıfırlama işlemi yapmayın. Nasıl yapılacağını bilmenizde bir sakınca yok.