Veritabanı şemamızı 5 farklı kurulumda (üretim, aşamalandırma ve birkaç geliştirme kurulumu) senkronize tutmak ve sürüm kontrolünde yedeklemek için bcwoord'a benzer bir şey kullanırız ve oldukça iyi çalışır. Biraz detaylandıracağım:
Veritabanı yapısını senkronize etmek için tek bir script, update.php ve 1.sql, 2.sql, 3.sql, vb. Olarak adlandırılan bir takım dosyalarımız vardır. Komut dosyası, veri tabanı. N.sql dosyaları, sürüm (N-1) 'den veritabanının N sürümüne gitmek için el ile hazırlanmıştır.
Tablo eklemek, sütun eklemek, eskiden yeni bir sütun biçimine veri taşımak, sonra sütunu bırakmak, kullanıcı türleri gibi "ana" veri satırlarını eklemek için kullanılabilir. Temel olarak, her şeyi yapabilir ve uygun verilerle taşıma komut dosyaları asla veri kaybetmezsiniz.
Güncelleme komut dosyası şu şekilde çalışır:
- Veritabanına bağlanın.
- Geçerli veritabanında (malzeme nedeniyle bir yedeğini alın edecek yanlış) [Mysqldump].
- Yoksa, defter tutma tablosu (_meta olarak adlandırılır) oluşturun.
- Geçerli VERSION sürümünü _meta tablosundan okuyun. Bulunmazsa 0 olduğunu varsayın.
- VERSION değerinden daha yüksek numaralı tüm .sql dosyaları için bunları sırayla yürütün
- Dosyalardan biri hata ürettiyse: yedeklemeye geri dönün
- Aksi takdirde, defter tutma tablosundaki sürümü yürütülen en yüksek .sql dosyasına güncelleyin.
Her şey kaynak kontrolüne girer ve her kurulum tek bir komut dosyası yürütmesiyle en son sürüme güncellenecek bir komut dosyasına sahiptir (uygun veritabanı şifresi ile update.php çağrılır). Hazırlama ve üretim ortamlarını, veritabanı güncelleme komut dosyasını otomatik olarak çağıran bir komut dosyası aracılığıyla güncelleştiririz, böylece gerekli veritabanı güncelleştirmeleriyle birlikte bir kod güncelleştirmesi gelir.
Tüm veritabanını sıfırdan yeniden oluşturmak için aynı komut dosyasını da kullanabiliriz; veritabanını bırakıp yeniden oluşturduktan sonra veritabanını tamamen yeniden dolduracak komut dosyasını çalıştırıyoruz. Komut dosyasını, otomatik sınama için boş bir veritabanı doldurmak için de kullanabiliriz.
Bu sistemi kurmak sadece birkaç saat sürdü, kavramsal olarak basit ve herkes sürüm numaralandırma şemasını aldı ve değişiklikleri iletmek veya manuel olarak yürütmek zorunda kalmadan, veritabanı tasarımını ileriye taşıma ve geliştirme yeteneğine sahip olmak çok değerli oldu. tüm veritabanlarında.
Yine de phpMyAdmin sorguları yapıştırırken sakının! Bu oluşturulan sorgular genellikle komut dosyalarınızı kıracağından kesinlikle istemediğiniz veritabanı adını içerir! TABLO OLUŞTUR gibi bir şey mydb
. newtable
(...) sistemdeki veritabanı mydb olarak adlandırılmazsa başarısız olur. Dizeyi içeren .sql dosyalarına izin vermeyecek bir yorum öncesi SVN kancası oluşturduk mydb
;