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?
Tablo Arşivleme Yardım
8
●317
- 10-09-2015, 21:41:45Oncelikle 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:53Maalesef 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.reddoc adlı üyeden alıntı: mesajı görüntüle
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:56Merhabalar,ibryas adlı üyeden alıntı: mesajı görüntüle
Bu bir bug gibi gorunuyor, mysql in hangi versiyonunu kullaniyorsunuz? - 13-09-2015, 13:53:43Selamlar,ibryas adlı üyeden alıntı: mesajı görüntüle
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:15evet 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
OSX