• 10-09-2015, 14:41:06
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba Arkadaşlar. Sorunumu şöyle açıklayayım;

    Bir biriyle bağlantılı x, y, z adında 3 tane tablom var, bunları hergün xarsiv, yarsiv, zarsiv diye 3 farklı tabloya taşıyorum ve x,y,z tabloları boşalıyor. Bu hergün bu şeklide tekrarlanıyor. Buraya kadar sıkıntı yok.

    Sorun, bir şekilde server restart edildiğinde x, y, z tabloları o an boş olduğu için ID de 1 den başlıyor yani AUTO_INCREMENT 1 oluyor ki bu da sıkıntı x ve xarsiv tablolarında aynı ID ler oluyor.

    Bu 3 tabloyu bu şekilde hergün arşivlemem gerekiyor ve arşivleri de kullanmam gerekiyor. Bunun dışında bir öneriniz var mıdır?
  • 10-09-2015, 21:41:45
    #2
    Oncelikle restart etmek ile auto_increment in sifirlanmamasi gerekiyor. Ya bir yerde truncate yapiyorsunuz ya da baska bir ariza var.

    X tablosundan veriyi arsive alirken eger iliskisel bir yapi kullanmiyorsaniz id leri olmadan aktarim yapin, xarsiv tablosu ona id atasin
  • 11-09-2015, 10:13:53
    #3
    reddoc adlı üyeden alıntı: mesajı görüntüle
    Oncelikle restart etmek ile auto_increment in sifirlanmamasi gerekiyor. Ya bir yerde truncate yapiyorsunuz ya da baska bir ariza var.

    X tablosundan veriyi arsive alirken eger iliskisel bir yapi kullanmiyorsaniz id leri olmadan aktarim yapin, xarsiv tablosu ona id atasin
    Maalesef restart edince tabloda veri yoksa sıfırlanıyor. Restar etmediğiniz sürece son değer saklı kalıyor. Veriyi silerken delete ile siliyorum yani sildikten sonra A_I değeri sıfırlanmıyor. Ta ki sunucu restar olana kadar.

    ID ler bir biri ile ilişkili olduğundan olduğu gibi aktarmam gerekiyor.

    Ben dün şu şekilde bir çözüm ürettim.
    eğer x tablosu boşsa xarsiv tablosunun son ID+1 dedim, bu ilk kayıtta tablo boşsa xarşivin son ID değerinden devam ediyor. Şimdilik çalışıyor ama fazladan kod kalabalığı oldu
  • 11-09-2015, 10:32:56
    #4
    ibryas adlı üyeden alıntı: mesajı görüntüle
    Maalesef restart edince tabloda veri yoksa sıfırlanıyor. Restar etmediğiniz sürece son değer saklı kalıyor. Veriyi silerken delete ile siliyorum yani sildikten sonra A_I değeri sıfırlanmıyor. Ta ki sunucu restar olana kadar.

    ID ler bir biri ile ilişkili olduğundan olduğu gibi aktarmam gerekiyor.

    Ben dün şu şekilde bir çözüm ürettim.
    eğer x tablosu boşsa xarsiv tablosunun son ID+1 dedim, bu ilk kayıtta tablo boşsa xarşivin son ID değerinden devam ediyor. Şimdilik çalışıyor ama fazladan kod kalabalığı oldu
    Merhabalar,

    Bu bir bug gibi gorunuyor, mysql in hangi versiyonunu kullaniyorsunuz?
  • 11-09-2015, 11:05:38
    #5
    Versiyon : 5.5.33

    İşletim Sistemi IOS
  • 11-09-2015, 11:17:45
    #6
    ibryas adlı üyeden alıntı: mesajı görüntüle
    Versiyon : 5.5.33

    İşletim Sistemi IOS
    IOS derken?
  • 11-09-2015, 11:28:45
    #7
    Pardon el alışkanlığı OSX
  • 13-09-2015, 13:53:43
    #8
    ibryas adlı üyeden alıntı: mesajı görüntüle
    Pardon el alışkanlığı OSX
    Selamlar,

    InnoDB de auto increment degeri meta veri olarak tablo dosyalarinda saklanmiyormus. En buyuk id+1 seklinde bir algoritme kullaniyormus. Ozetle bug degil feature imis Acikcasi bana da surpriz oldu, bilmiyordum bunu.

    Cozum olarak bir trigger yazabilirsiniz auto_increment kullanmak yerine. Tablodaki en buyuk idye bakar, null domuyor ise sorgu xarsiv tablosundaki en buyuk idyi alir ve 1 ekleyerek kolona deger atarsiniz. Trigger i before insert e yazmaniz gerekli. After insert e yazarsaniz kolonu guncelleyemezsiniz.
  • 14-09-2015, 10:41:15
    #9
    evet benim içinde kötü bir sürpriz oldu, sorunu şimdilik bu şekilde çözdüm. İlgin için teşekkürler.
    ibryas adlı üyeden alıntı: mesajı görüntüle
    Ben dün şu şekilde bir çözüm ürettim.
    eğer x tablosu boşsa xarsiv tablosunun son ID+1 dedim, bu ilk kayıtta tablo boşsa xarşivin son ID değerinden devam ediyor. Şimdilik çalışıyor ama fazladan kod kalabalığı oldu