Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Mysql #23000Duplicate entry hatası
#1
Merhaba
4 farklı mysql veritabanında product_option isimli tablo var bu tablolara insert v.s ederken hiç bir sıkıntı olmuyordu dün 4 veritabanı içinde
#23000Duplicate entry '350637' for key 'PRIMARY' şeklinde hatalar vermeye başladı 2 veritabanında sorunu autoinc değerini bir artırarak halletim örnek autoinc alan 15700 iken 15701 yaptım fakat geri kalan 2 veritabanında product_option tablosunda hata devam etti tabloyu drop edip yeniden create ettim değişmedi tüm tabloları onar dedim değişmedi.
kod tarafında max id yi alıp bir artırmakta istemiyorum bu tip bir sorunla karşılaşan oldumu

 
EkleSql:='';
EkleSql:=EkleSql+'INSERT INTO '+tablooneki+'product_option (`product_option_id`, `product_id`, `option_id`, `option_value`, `required`)';

EkleSql:=EkleSql+'  VALUES   ';
EkleSql:=EkleSql+'(:product_option_id,:product_id,:option_id,:option_value,:required) ';

qry_ekleme.Close;
qry_ekleme.SQL.Text:=EkleSql;
qry_ekleme.ParamByName('product_id').Text:=ProductId;
buradaki product_option_id alanı autoinc olarak tanımlı bu kod 2 veritabanında sorunsuz çalışırken 2 tanesinde #23000Duplicate entry '350637' for key 'PRIMARY' hatasını veriyor.

“Do. Or do not. There is no try.”
Cevapla
#2
MYSQL elektrik kesintisinde primary ID hata verebiliyor. Tekerrür eden ID değiştir düzelir.
Cevapla
#3
(04-08-2017, Saat: 14:51)CaglarCoskun Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMYSQL elektrik kesintisinde primary ID hata verebiliyor. Tekerrür eden ID değiştir düzelir.

tekerrür eden id yok autoinc düzgün çalışmıyor tabloyu truncate ile temizlediğimde tüm kayıtlar siliniyor ve autoinc değeri 1 oluyor ama programdan o tabloya veri aktarırken autoinc alan 147 değeri alıyor daha sonra ikinci bir kayıt eklerken tekrar 147 değeri alıyor.

“Do. Or do not. There is no try.”
Cevapla
#4
Merhaba,

MySQL için konuşayım.
tabloyu truncate ettikten sonra autoinc 1 ile başlar,
ama tabloya kayıt eklerken autoinc sahasına müdahele edip değer ataması yapınca diyelim 100 atadınız.
MySQL, tablo için autoinc değerini atadığınız değerden başlatır. autoinc değeri 2 değil 101 olur.
Cevapla
#5
(04-08-2017, Saat: 16:14)meko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

MySQL için konuşayım.
tabloyu truncate ettikten sonra autoinc 1 ile başlar,
ama tabloya kayıt eklerken autoinc sahasına müdahele edip değer ataması yapınca diyelim 100 atadınız.
MySQL, tablo için autoinc değerini atadığınız değerden başlatır. autoinc değeri 2 değil 101 olur.

autoinc alana kendim bir değer atmıyorum kendisi zaten artırıyor normalde ama bu iki veritabanında böyle bir sorun oldu mysql i yeniden başlatım tablo truncate drop create denedim değişmedi bir şey.

“Do. Or do not. There is no try.”
Cevapla
#6
MYISAM kullanıyorsanız repair table komutunu kullanın. Çakışan ID numarasınıda değiştirin
Cevapla
#7
tabloya veriyi nasıl aktarıyorsunuz?
Cevapla
#8
Merhaba,

Belli ki ID çakışması yaşıyorsun; 4 farklı mysql veritabanında aynı (product_option) isimli birer tablo olduğunu söyledin ve bunları tek bir tabloda birleştirmek istediğini belirtiyorsun, doğru mu anladım?

Eğer durum böyle ise ID çakışmasından kurtulmanın bir ylu yok, çünkü zaman içinde zaten 4 veritabanında da paralel bir şekilde ID'ler oluşacaktır. Ben olsam bu durumda verileri topladığım tabloya 3 alan daha eklerdim;

1) KaynakDB    --> Bu senin hangi veritabanından veriyi çektiğini gösterir
3) KaynakTablo --> Bu hangi tablodan buraya veri aktardığını gösterir.
2) KaynakID    --> Bu hangi ID'yi bu tabloya aktardığını gösterir

Bu noktadan sonra da ID çakışmasını önlemek için PRIMARY KEY alanına dokunmaz, insert işlemini doğal akışına bırakırdım ( YANİ verileri topladığım tablonun PRIMARY KEY ALANINA MANUEL BİR ŞEKİLDE ID YAZMAZDIM...)
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Can Yücel: "Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı."
Cevapla
#9
(04-08-2017, Saat: 20:21)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Belli ki ID çakışması yaşıyorsun; 4 farklı mysql veritabanında aynı (product_option) isimli birer tablo olduğunu söyledin ve bunları tek bir tabloda birleştirmek istediğini belirtiyorsun, doğru mu anladım?

Eğer durum böyle ise ID çakışmasından kurtulmanın bir ylu yok, çünkü zaman içinde zaten 4 veritabanında da paralel bir şekilde ID'ler oluşacaktır. Ben olsam bu durumda verileri topladığım tabloya 3 alan daha eklerdim;

1) KaynakDB    --> Bu senin hangi veritabanından veriyi çektiğini gösterir
3) KaynakTablo --> Bu hangi tablodan buraya veri aktardığını gösterir.
2) KaynakID    --> Bu hangi ID'yi bu tabloya aktardığını gösterir

Bu noktadan sonra da ID çakışmasını önlemek için PRIMARY KEY alanına dokunmaz, insert işlemini doğal akışına bırakırdım ( YANİ verileri topladığım tablonun PRIMARY KEY ALANINA MANUEL BİR ŞEKİLDE ID YAZMAZDIM...)
Tek tabloda birleştirme işlemi yapmıyorum

sorunum delphi tarafında değil uzun zamandır dokunmadığım kodlar ve gayet iyi çalışıyordu veritabanına bi haller oldu tam bilmiyorum ama sunucu aniden yeniden başlamış olabilir veya mysql servera bi haller oldu nolduysa bu tabloda autoinc alanda sorun yaşıyorum tabloyu drop etim yeniden create ettim düzelmedi sunucuda siteler çalıştığı için geç saatlerde sunucuyu yeniden başlatmayı deneyeceğim.


Myisam kullanıyorum repair denedim düzelmedi.

“Do. Or do not. There is no try.”
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MySQL vs MariaDB. Hangisi tercih edilmeli? uparlayan 4 442 18-06-2018, Saat: 15:14
Son Yorum: vkamadan
  MySQL - SQL Tablo Kontrolü Halil Han Badem 3 260 26-05-2018, Saat: 13:11
Son Yorum: Halil Han Badem
  Soru : MySQL Veritabanı' nda Explode İşlemi Nasıl Yapılır mad85 9 666 22-03-2018, Saat: 21:48
Son Yorum: uparlayan
  MySQL SP recover.. mcuyan 6 470 06-01-2018, Saat: 17:07
Son Yorum: mcuyan
Question MySQL ve MsSQL Md5 Fonksiyon Sonuçları Eşleşmiyor frmman 6 553 22-12-2017, Saat: 09:25
Son Yorum: frmman



Konuyu Okuyanlar: 1 Ziyaretçi