"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मुझे MySQL त्रुटि 1022 क्यों मिल रही है: \"लिख नहीं सकता; तालिका में डुप्लिकेट कुंजी।\" भले ही मेरे पास केवल एक कुंजी है?

मुझे MySQL त्रुटि 1022 क्यों मिल रही है: \"लिख नहीं सकता; तालिका में डुप्लिकेट कुंजी।\" भले ही मेरे पास केवल एक कुंजी है?

2024-11-07 को प्रकाशित
ब्राउज़ करें:341

 Why Am I Getting MySQL Error 1022: \

MySQL त्रुटि 1022: विदेशी कुंजी नामों का टकराव

MySQL का उपयोग करके एक तालिका बनाने का प्रयास करते समय, आपको त्रुटि 1022 का सामना करना पड़ता है: "लिख नहीं सकता; डुप्लिकेट कुंजी तालिका में।" अजीब पहलू यह है कि तालिका केवल एक कुंजी को परिभाषित करती है, लेकिन त्रुटि बनी रहती है।

जांच करने पर, ऐसा प्रतीत होता है कि तालिका परिभाषा के भीतर एक विशिष्ट स्निपेट त्रुटि को ट्रिगर करता है:

CONSTRAINT `error_id`
FOREIGN KEY (`error_id` )
REFERENCES `mydb`.`errors` (`error_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,

जबकि समान विदेशी कुंजी परिभाषाएँ बिना किसी समस्या के अन्य तालिकाओं में मौजूद हैं, समस्या विदेशी कुंजी के नाम में है: error_id.

मूल कारण:

समस्या इसलिए उत्पन्न होती है क्योंकि एक विदेशी कुंजी नाम संपूर्ण डेटाबेस मॉडल के भीतर किसी अन्य विदेशी कुंजी नाम के समान नहीं हो सकता है। इसका मतलब यह है कि यदि दो तालिकाएँ एक ही तालिका को संदर्भित करती हैं, तो प्रत्येक तालिका में विदेशी कुंजियों के अद्वितीय नाम होने चाहिए।

समाधान:

त्रुटि को हल करने के लिए, बस दें प्रश्न में विदेशी कुंजी एक अलग नाम है। उदाहरण के लिए, आप इसे fk_error_id नाम दे सकते हैं। यह इसे मॉडल में किसी भी अन्य विदेशी कुंजी से अलग करेगा और MySQL को सफलतापूर्वक तालिका बनाने की अनुमति देगा।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3