سؤال

أنا عالق في استعلام MySQL باستخدام تحديث مفتاح مكرر.

أحصل على الخطأ:

mySQL Error: 1062 - Duplicate entry 'hr2461809-3' for key 'fname'

يبدو الجدول هكذا:

id int(10) NOT NULL default '0',   
picid int(10) unsigned NOT NULL default '0',
fname varchar(255) NOT NULL default '',  
type varchar(5) NOT NULL default '.jpg',  
path varchar(255) NOT NULL default '',    
PRIMARY KEY  (id),  
UNIQUE KEY fname (fname),  
KEY picid (propid)  
) ENGINE=MyISAM DEFAULT CHARSET=utf8;  

والاستعلام الذي يكسر هو:

INSERT INTO images SET picid=732, fname='hr2461809-3', path='pictures/' ON DUPLICATE KEY UPDATE picid=732,  fname='hr2461809-3', path='pictures/' 

أنا أستخدم استعلامًا مشابهًا جدًا في مكان آخر في التطبيق دون أي مشاكل. لست متأكدًا من سبب كسر هذا واحد. كنت أتوقع أنه عندما ينتهك المفتاح الفريد في Fname ، فإنه سيقوم ببساطة بتحديث الصف حيث حدث الانتهاك؟

شكرا على اي مساعدة

هل كانت مفيدة؟

المحلول

أعتقد أنك تريد ON DUPLICATE KEY IGNORE.

أنت تطلب ، في حالة حدوث تصادم رئيسي ، ببساطة إعادة إدخال نفس البيانات. مما لا يثير الدهشة أن هذا ينتج عنه تصادم رئيسي آخر ، لأنه لا يزال صفًا مكررًا!

ON DUPLICATE KEY IGNORE سوف أجهض الإدراج إذا كان الصف موجود بالفعل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top