MySQL कार्यक्षेत्र से विदेशी कुंजी बनाने में त्रुटि


9

मैं MySQL कार्यक्षेत्र से स्कीमा परिवर्तन को अपने डेटाबेस में सिंक्रनाइज़ करने का प्रयास कर रहा हूं। जब मैं एक विदेशी कुंजी बनाने की कोशिश करता हूं तो मुझे निम्न त्रुटि मिल रही है:

Executing SQL script in server
ERROR: Error 1005: Can't create table 'tomato.#sql-2730_1b8' (errno: 121)

यहाँ यह कथन है जिसे निष्पादित करने की कोशिश की जा रही है:

ALTER TABLE `tomato`.`ing_allergy_ingredient` 
ADD CONSTRAINT `fk_ai_allergy`
FOREIGN KEY (`allergy_id` )
REFERENCES `tomato`.`ing_allergy` (`allergy_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION

किसी भी विचार इस त्रुटि का क्या मतलब है?

जवाबों:


11

यदि आप एक नाम के साथ एक बाधा जोड़ने की कोशिश कर रहे हैं, तो आपको यह संदेश मिलेगा।

इस पोस्ट के अनुसार आप अपने बाधा की जाँच इस तरह कर सकते हैं:

यदि आप जिस तालिका को बनाने का प्रयास कर रहे हैं, उसमें एक विदेशी कुंजी बाधा शामिल है, और आपने उस बाधा के लिए अपना नाम प्रदान किया है, तो याद रखें कि यह डेटाबेस के भीतर अद्वितीय होना चाहिए। इस क्वेरी को यह देखने के लिए चलाएं कि क्या यह नाम कहीं उपयोग में है:

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;

इस क्वेरी में विदेशी कुंजी दिखाई नहीं दी, लेकिन जब मैंने टेबल पर देखा तो वहां इसी नाम से एक इंडेक्स था। मेरा मानना ​​है कि यह MySQL कार्यक्षेत्र में सिंक्रनाइज़ेशन के साथ एक बग है। मैंने नवीनतम संस्करण (5.2.31) डाउनलोड किया और समस्या दूर हो गई।
BenV
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.