R.Reddington

WFN Üye
Konular
627
Mesajlar
627
Çözüm
0
Ticaret Puanı
0
Üyelik
25 Gün
Konum
Kastamonu
Web Sitesi
Var
Alanı
Sosyal Backlink
1/1
Konu sahibi
Migration çalışmıyorsa önce komutu doğru proje ve ortamda çalıştırın, ardından migration durumunu ve ilk somut hata mesajını inceleyin. Bağlantı, yetki veya şema uyuşmazlığını giderdikten sonra komutu yeniden çalıştırıp ilgili migration’ın up durumuna geçtiğini doğrulayın. Veritabanını sıfırlamak ilk çözüm değildir; özellikle üretimde veri kaybına yol açabilir.

Komutu ve migration durumunu kontrol edin​

Terminali projenin Gemfile dosyasının bulunduğu dizinde açın. Migration, veritabanı şemasında yapılacak değişikliği tanımlayan Ruby dosyasıdır. Önce projenin bağımlılıklarının kurulu olduğundan ve kullanacağınız veritabanına erişiminiz bulunduğundan emin olun. Ardından geliştirme ortamında şu komutları çalıştırın:

Kod:
bin/rails db:migrate:status RAILS_ENV=development
bin/rails db:migrate RAILS_ENV=development

Durum çıktısında down, ilgili migration’ın bu veritabanında henüz uygulanmadığını; up ise sürümünün uygulanmış olarak kaydedildiğini gösterir. Komut hatasız bitse de beklediğiniz değişiklik görünmüyorsa ortamı, bağlı veritabanını ve dosyanın db/migrate altında bulunduğunu kontrol edin. up durumu, şemanın daha sonra elle değiştirilmediğini kanıtlamaz.

Hata alırsanız yalnızca en sondaki genel başarısızlık mesajına değil, onun üzerindeki ilk anlamlı hata sınıfına ve açıklamaya bakın. Gerekirse ayrıntı için aynı komutu --trace seçeneğiyle tekrarlayın; çıktıda parola veya bağlantı adresi bulunabileceğinden paylaşmadan önce gizleyin.

Hata türüne göre ilerleyin​

Aşağıdaki ayrım, hatanın hangi katmanda oluştuğunu belirlemenize yardımcı olur:
Belirtiİlk kontrol
Bağlantı reddediliyor veya sunucu bulunamıyorSunucu, adres ve port
Kimlik doğrulama veya yetki hatasıKullanıcı, parola ve gerekli veritabanı izinleri
Tablo veya sütun zaten var ya da bulunamıyorGerçek şema ve migration sırası
Ruby veya bağımlılık hatasıHata verilen dosya, satır ve proje bağımlılıkları
Bağlantı sorununda config/database.yml dosyasındaki seçili ortamı ve varsa DATABASE_URL ortam değişkenini inceleyin. Veritabanı servisinin çalıştığını, adresin ve portun uygulamanın çalıştığı yerden erişilebilir olduğunu doğrulayın. Uygulama bir konteynerde çalışıyorsa localhost konteynerin kendisini ifade eder; veritabanı ayrı bir servisteyse uygun servis adresini kullanın. Ayarı değiştirdikten sonra komutu aynı çalışma ortamında yeniden deneyin.

Kimlik doğrulama hatasında kullanıcı ve parola bilgisini güvenli kaynağından karşılaştırın. Bağlantı kuruluyor ancak şema değişikliği reddediliyorsa uygulama kullanıcısının ilgili veritabanında gereken işlem izinlerini yöneticiden isteyin. Örneğin MySQL’de bağlantı yetkisi ile belirli bir tabloyu değiştirme yetkisi farklı kontrollerdir; başarılı bağlantı her migration işleminin yetkili olduğunu göstermez.

Şema ile migration geçmişini karşılaştırın​

Örneğin bir migration users tablosuna email sütunu eklerken sütunun zaten var olduğunu bildiriyorsa, ilgili dosyayı açıp işlemi okuyun; sonra veritabanı istemcisiyle doğru veritabanındaki gerçek tabloyu inceleyin. Sütunun elle eklenmiş olması, başka bir migration tarafından oluşturulması veya önceki denemenin kısmen uygulanmış olması olası nedenlerdir. Durum çıktısındaki sürüm ile dosyanın zaman damgasını da karşılaştırın.

Migration henüz ortak ortamlara uygulanmamışsa, tekrar eden veya yanlış sıradaki işlemi proje geçmişine uygun biçimde düzelterek dosyayı kaydedin ve yeniden çalıştırın. Başka ortamlarda uygulanmış bir migration’ı geriye dönük değiştirmek yerine genellikle yeni bir düzeltme migration’ı hazırlamak daha güvenlidir. Gerçek şema ile geçmiş uyuşmuyorsa, veri içeriğini ve işlemin önceki etkilerini anlamadan sütunu silmeyin veya migration sürüm kaydını elle değiştirmeyin. Bazı veritabanlarında başarısız migration’ın bir kısmı uygulanmış kalabilir.

Veritabanı hiç oluşturulmamışsa ve hedefin yeni bir geliştirme veritabanı olduğundan eminseniz bin/rails db:create RAILS_ENV=development çalıştırın; ardından migration komutunu tekrarlayın. Mevcut veritabanını yeniden oluşturmak veya db:reset çalıştırmak farklı ve yıkıcı bir işlemdir.

Düzeltmeyi doğrulayın​

Migration komutunu aynı ortamda tekrar çalıştırın ve ardından bin/rails db:migrate:status RAILS_ENV=development ile ilgili sürümün up olduğunu kontrol edin. Beklenen tablo veya sütunu ayrıca veritabanında inceleyin; durum kaydı tek başına mevcut şemanın doğruluğunu garanti etmez.

Sorun sürüyorsa proje sorumlusuna Rails ve Ruby sürümlerini, kullanılan veritabanı türünü, ortamı, çalıştırılan komutu, ilgili migration dosyasını ve ilk anlamlı hata mesajını iletin. Parolaları, bağlantı adreslerindeki gizli bilgileri ve hassas verileri çıkarın; yetki veya şema uyuşmazlığının incelenmesini isteyin. Eklediğiniz geçici tanılama çıktısını işlem bitince kaldırın.
 
Moderatör tarafında düzenlendi:

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic