मैं "katalog" नामक तालिका में एक विदेशी कुंजी जोड़ना चाहता हूं। InnoDB स्थिति मेंमौजूदा तालिका में विदेशी कुंजी जोड़ें
Error Code: 1005. Can't create table 'mytable.#sql-7fb1_7d3a' (errno: 150)
त्रुटि::
ALTER TABLE katalog
ADD CONSTRAINT `fk_katalog_sprache`
FOREIGN KEY (`Sprache`)
REFERENCES `Sprache` (`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL;
जब मैं यह करने के लिए प्रयास करते हैं, मैं इस त्रुटि संदेश मिलता है
120405 14:02:57 करने में त्रुटि तालिका mytable की विदेशी कुंजी बाधा। # sql-7fb1_7d3a:
FOREIGN KEY (`Sprache`)
REFERENCES `Sprache` (`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL:
Cannot resolve table name close to:
(`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL
जब मैं कार्रवाई "हटाने पर" इस क्वेरी यह काम करता है का उपयोग करें, लेकिन गलत के साथ:
ALTER TABLE `katalog`
ADD FOREIGN KEY (`Sprache`) REFERENCES `sprache` (`ID`)
दोनों तालिकाओं InnoDB हैं और दोनों क्षेत्रों रहे हैं "INT (11) रिक्त नहीं"। मैं MySQL 5.1.61 का उपयोग कर रहा हूँ। मैकबुक प्रो पर MySQL वर्कबेंच (नवीनतम) के साथ इस ALTER क्वेरी को आग लगाने का प्रयास कर रहा है।
तालिका कथन बनाएं:
CREATE TABLE `katalog` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`AnzahlSeiten` int(4) unsigned NOT NULL,
`Sprache` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `katalogname_uq` (`Name`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC$$
CREATE TABLE `sprache` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Bezeichnung` varchar(45) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Bezeichnung_UNIQUE` (`Bezeichnung`),
KEY `ix_sprache_id` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
चूंकि आपने 'शो क्रिएट टेबल' के आउटपुट को पोस्ट नहीं किया है, इसलिए मैं केवल पूछ सकता हूं - क्या कॉलम नाम वास्तव में आईडी है, ऊपरी है? –
मैंने इसे ऊपर जोड़ा। – frgtv10
अच्छा, अब स्पॉट करना आसान है - 'katalog' में int (11) हस्ताक्षरित' है। 'sprache' में' usign' भाग नहीं है, इसलिए दो कॉलम समान नहीं हैं। –