विफल होती है यह एक सामान्य त्रुटि प्रतीत होती है, लेकिन मेरे जीवन के लिए मैं इसे समझ नहीं सकता।MySQL - कोई बाल पंक्ति जोड़ या अपडेट नहीं कर सकता: एक विदेशी कुंजी बाधा
मेरे पास MySQL में InnoDB उपयोगकर्ता तालिका का एक सेट है जो विदेशी कुंजी के माध्यम से एक साथ बंधे हैं; माता-पिता user
तालिका, और ईमेल पते, क्रियाएं इत्यादि स्टोर करने वाली बाल सारणी का एक सेट। ये सभी माता-पिता user
तालिका से विदेशी कुंजी, uid
से बंधे हैं, सभी माता-पिता और बाल कुंजी int(10)
हैं।
बच्चे तालिकाओं के सभी एक विदेशी कुंजी बाधा user.uid
की ओर इशारा करते के साथ एक uid
मूल्य है, और ON DELETE CASCADE
और ON UPDATE CASCADE
करने के लिए सेट।
जब मैं user
से उपयोगकर्ता को हटाता हूं, तो सभी बच्चे को बाधित प्रविष्टियां हटा दी जाती हैं। हालांकि, जब मैं एक user.uid
मूल्य अद्यतन करने का प्रयास है, यह निम्न त्रुटि में परिणाम है, बल्कि बच्चे तालिकाओं के लिए uid
परिवर्तन व्यापक की तुलना में:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`accounts`.`user_email`, CONSTRAINT `user_email_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE)
मुझे लगता है मैं यहाँ कुछ स्पष्ट याद आ रही किया जाना चाहिए है। user_email
के साथ कुंजी बाधा को हटाने और user
में मान को अपडेट करने का प्रयास उसी त्रुटि में होता है लेकिन अगले वर्णमाला user
बच्चे तालिका के लिए, इसलिए मुझे विश्वास नहीं है कि यह एक तालिका-विशिष्ट त्रुटि है।
संपादित करें:
SHOW ENGINE INNODB STATUS
से परिणामों में जोड़ना:
------------------------
LATEST FOREIGN KEY ERROR
------------------------
121018 22:35:41 Transaction:
TRANSACTION 0 5564387, ACTIVE 0 sec, process no 1619, OS thread id 2957499248 updating or deleting, thread declared inside InnoDB 499
mysql tables in use 1, locked 1
17 lock struct(s), heap size 2496, 9 row lock(s), undo log entries 2
MySQL thread id 3435659, query id 24068634 localhost root Updating
UPDATE `accounts`.`user` SET `uid` = '1' WHERE `user`.`uid` = 306
Foreign key constraint fails for table `accounts`.`user_email`:
,
CONSTRAINT `user_email_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE
Trying to add in child table, in index `uid` tuple:
DATA TUPLE: 2 fields;
...
A bunch of hex code
But in parent table `accounts`.`user`, in index `PRIMARY`,
the closest match we can find is record:
...
A bunch of hex code
'इंजन इंजन INNODB स्थिति दिखाएं –
इसके बजाय इसे डीबीए में स्थानांतरित करने के लिए वोटिंग। –