v2.5.2
Giriş yap

MySQL Verinin Kendiliğinden Silinmesi

mcfearcombat
265 defa görüntülendi

Merhabalar,

Veritabanımda bululnan bir tabloda qty_in_pack isimli bir sütun var. Tabloda 5000 satır veri var ve bazılarında ilgili sütunda veri kayıtlı bazıları NULL olarak duruyor.

Nasıl olduğunu anlayamadığım şekilde veri kayıtlı olan satırlar NULL 'a dönüyor. Veritabanında işlem yapan ve cronJob ile otomatik çalışan 3-4 php dosyası mevcut, bunlar içerisinde ilgili sütunu silecek bir bug tespit edemedim. Aynı şekilde bu cronJob ile çalışan dosyaları manuel çalıştırdığımda da verilerin silinmediğini gördüm.

Veriler kendi kendine silinmeyeceğine göre, hatanın nerede olduğunu tespit edebilmem için kullanmam gereken yöntemler nedir ?

Örneğin; satırdaki verilerin değiştirilme zamanı vb. başka yöntemler var mıdır ?

Cevap yaz
Cevaplar (1)
bmathers
478 gün önce

Merhaba, çalıştırdığın cron dosyasında ilgili veri güncellenirken bazı değişkenler null olarak gönderiliyor olabilir.

Çözüm önerileri;

  • Veriyi güncellemek için kullandığın değişkenleri kontrol et. Muhtemelen veriyi NULL'a döndüren veya boşaltan bir kod parçacığı olabilir.
  • Veri güncellerken eski ve yeni veriyi değişken isimleriyle beraber bir dizi içerisinde log olarak bir dosyaya veya veritabanında farklı bir tabloya kaydet. Bu sayede sorunun kaynağını tespit edebilirsin.
  • Veriyi güncellemek için API kullanıyorsan, API'den gelen yanıt boş olduğu için NULL olarak güncelliyor olabilir. API'den gelen verileri kontrol et.
  • Sorunu sadece cron dosyasında aramak yerine ilgili veriyi güncelleyen tüm php dosyalarını kontrol et. Manuel olarak veri üzerinde düzenleme yaptığın zaman da NULL olarak güncelleniyor olabilir.
Örnek Log Kaydı

$eskiVeri = [
    '1. Sütun' => $veritabanindan_gelen_veri['sutun_1'],
    '2. Sütun' => $veritabanindan_gelen_veri['sutun_2'],
    '3. Sütun' => $veritabanindan_gelen_veri['sutun_3'],
    '4. Sütun' => $veritabanindan_gelen_veri['sutun_4'],
];

$yeniVeri = [
    '1. Sütun' => $guncellenmis_veri['sutun_1'],
    '2. Sütun' => $guncellenmis_veri['sutun_2'],
    '3. Sütun' => $guncellenmis_veri['sutun_3'],
    '4. Sütun' => $guncellenmis_veri['sutun_4'],
];

$insert = $db->insert('log')->set(array(
    'guncellenen_veri_id' => $veri_id,
    'eski_veri' => json_encode($eskiVeri),
    'yeni_veri' => json_encode($yeniVeri),
    'tarih' => date('Y-m-d H:i:s')
));

Kaynak kodlarını resimli bir şekilde paylaşabilirsen kodlarını inceleyebilirim.