Ağır gelişme dönemlerinde, veritabanı şeması hem hızlı hem de sürekli olarak değişir ve haftalık beta sürümüne bastığımız zaman, şema o kadar değişti ki, tek mantıklı seçenek yapabileceğim tüm tabloları nuke yapmak ve yeni sürümleri geliştirici veritabanımdan kopyala. Açıkçası, bu, bir kez başlatıldıktan sonra işe yaramayacak, çünkü nuking üretim verileri felaket için bir reçete, bu yüzden bir sürümden / revizyondan diğerine veritabanı şeması değişikliklerini yönetmek için hangi stratejilerin olduğunu merak ediyordum?
Bulduğum veya deneyimlediğim bazıları:
- Bir veritabanından diğerine düz nuke-and-dump (şimdi ne yapıyorum)
- UPDATE.sql dosyasının komut dosyasıyla veya el ile çalıştırılan SQL deyimleriyle bakımı.
- Etkin veritabanında karşılık gelen "db-schema-version" değerine sahip bir update.php dosyasının bakımı
Üçüncü seçenek en mantıklı gibi görünüyor, ancak yine de kötü yapılandırılmış bir SQL sorgusunun komut dosyasının ortasında başarısız olması, veritabanını yarı güncellenmiş bir durumda bırakması ve bir yedeğin geri yüklenmesini gerektirmesi olasılığı var.
Sorun değil gibi görünüyor, ancak bir ekip olarak phpMyAdmin kullandığımız için gerçekleşti ve hatta update.php dosyasına yapıştırmak için yürütülen SQL deyimini kopyaladığımı hatırlamıyorum bile. Başka bir sayfaya gittikten sonra, SQL deyimini elle yeniden yazmam veya değişikliğimi tersine çevirmem ve tekrar yapmam gerekiyor.
Sanırım neyi bekliyorum, yerleşik geliştirme iş akışımızı etkilemeyen bir çözüm?
update.php
veyaupdate.sql
dosyanızı bir test ortamında test edersiniz , değil mi? Ve PHPMyAdmin senaryo gibi olası sorunlar için suçlanıyor, belki de farklı / daha iyi bir araca bakmanın zamanı geldi mi?