2010-11-02 13 views
69

का नाम बदलने में त्रुटि तो मैं अपने डेटाबेस में किसी एक तालिका में प्राथमिक कुंजी जोड़ने की कोशिश कर रहा हूं । फिलहाल इसकी प्राथमिक कुंजी है:# 1025 - './database/#sql-2e0f_1254ba7' से './database/table' (errno: 150)

PRIMARY KEY (user_id, round_number) 

जहां उपयोगकर्ता_आईडी एक विदेशी कुंजी है।

मैं यह करने के लिए इसे बदलने के लिए कोशिश कर रहा हूँ:

PRIMARY KEY (user_id, round_number, created_at) 

मैं तालिका संरचना को ध्यान में रखते प्राथमिक कुंजी आइकन पर क्लिक करके phpmyadmin में यह कर रहा हूं।

#1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150) 

यह InnoDB तालिका इंजन के साथ एक MySQL डेटाबेस है:

यह त्रुटि मैं हो रही है।

+1

Google का उपयोग करके एक त्वरित खोज मुझे यह विचार देती है कि यह समस्या बाधाओं से संबंधित है। संभावित सहायक लिंक: http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html और http://www.simplicidade.org/notes/archives/2008/03/mysql_errno_150। एचटीएमएल – Lekensteyn

उत्तर

124

शायद दूसरी कुंजी है जिसमें एक प्राथमिक कुंजी है जिसे आप जिस प्राथमिक कुंजी को बदलने की कोशिश कर रहे हैं उसका संदर्भ दे रहे हैं।

यह पता लगाने के लिए कि कौन सी तालिका में त्रुटि हुई है, आप SHOW ENGINE INNODB STATUS चला सकते हैं और फिर LATEST FOREIGN KEY ERROR अनुभाग देखें।

+0

मेरे मामले में, डेटाबेस को नया बनाया गया था, बिना किसी टेबल के। –

20

उन लोगों के लिए जो Google के माध्यम से इस प्रश्न को प्राप्त कर रहे हैं ... यह त्रुटि तब भी हो सकती है जब आप एक विदेशी कुंजी के रूप में कार्यरत क्षेत्र का नाम बदलने का प्रयास करते हैं।

28

जैसा कि कहा गया था कि आपको पहले एफके को हटाने की जरूरत है। MySQL पर इसे इस तरह कार्य करें:

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`; 

ALTER TABLE `table_name` DROP INDEX `id_name_fk`; 
+1

आपके उत्तर ने वास्तव में मेरी मदद की। ड्रॉप विदेशी कुंजी मुद्दे को हल किया। धन्यवाद –

13

PHPMyAdmin में या MySQL के साथ इस बाईपास के लिए, पहले विशेषता का नाम बदलने से विदेशी कुंजी बाधा को हटा दें।

:

+1

मुझे लगता है कि यह सबसे सटीक उत्तर है – MontrealDevOne

3

(PHPMyAdmin उपयोगकर्ताओं के लिए अगले "प्रिंट दृश्य" तालिका संरचना नीचे टूलबार में करने के लिए FK PHPMyAdmin में रोकें निकालने के लिए, विशेषता चुनने उसके बाद "संबंध दृश्य") यदि आप एक को नष्ट करने की कोशिश कर रहे हैं, तो कॉलम जो एक विदेशी कुंजी है, आपको सही नाम मिलना चाहिए जो कॉलम नाम नहीं है। उदाहरण: यदि मैं अलार्म तालिका में सर्वर फ़ील्ड को हटाने का प्रयास कर रहा हूं जो सर्वर तालिका के लिए एक विदेशी कुंजी है। CONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`) लाइन के लिए

  1. SHOW CREATE TABLE alarm; देखो।
  2. ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
  3. ALTER TABLE `alarm` DROP `server_id`

यह अलार्म मेज से विदेशी कुंजी सर्वर को हटा देंगे।

3

मैं था इस समस्या है, यह विदेशी कुंजी

(नीचे छवि की तरह) Relation View पर क्लिक करें के लिए है तो क्षेत्र में आप इसे दूर करने के लिए जा रहे हैं के नाम मिल जाए, और Foreign key constraint (INNODB) के तहत कॉलम, बस कुछ भी नहीं चुनने के लिए!कोई विदेशी कुंजी

enter image description here

आशा है कि काम करता है इसका मतलब है!

0

यदि आप कोई विदेशी कुंजी जोड़ रहे हैं और इस त्रुटि का सामना कर रहे हैं, तो यह हो सकता है कि बच्चे तालिका में मूल्य मूल तालिका में मौजूद न हो।

मान लें कि कॉलम के लिए जिस पर विदेशी कुंजी जोड़नी है, सभी मान 0 पर सेट हैं और उस तालिका में मान उपलब्ध नहीं है जिसे आप संदर्भित कर रहे हैं।

आप कुछ मूल्य निर्धारित कर सकते हैं जो मूल तालिका में मौजूद है और उसके बाद विदेशी कुंजी मेरे लिए काम कर रही है।

संबंधित मुद्दे