मैं MySQL InnoDB में एक टेबल इस तरह बनाया है: तालिका बनाने के दौरान के रूप में के साथ समस्या थीMySQL - नहीं जोड़ सकते हैं विदेशी कुंजी
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`type` enum('MANUAL','FACEBOOK') NOT NULL DEFAULT 'MANUAL',
`role` enum('COOK','HOST','ALL') NOT NULL DEFAULT 'ALL',
`about_me` varchar(1000) DEFAULT NULL,
`food_preferences` varchar(1000) DEFAULT NULL,
`cooking_experience` varchar(1000) DEFAULT NULL,
`with_friend` bit(1) DEFAULT b'0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
अगला मैं इस तरह के एक बयान के साथ एक मेज जोड़ने की कोशिश की (कोई विदेशी कुंजी जोड़ा
0123:CREATE TABLE `messages` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`from` bigint(20) NOT NULL,
`to` bigint(20) NOT NULL,
`content` varchar(10000) NOT NULL,
`timestamp_sent` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`timestamp_read` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
होने टेबल बनाया है, मैं अंत में 'users'.'id'
क्षेत्र को संदर्भित 'from'
और 'to'
खेतों पर विदेशी कुंजी जोड़ने की जरूरत है: कि)
त्रुटि मैं मिलता है:
ERROR: Error 1822: Failed to add the foreign key constraint. Missing index for constraint 'messages_users_fk' in the referenced table 'users'.
लेकिन 'उन' तालिका 'id'
पर एक PRIMARY
सूचकांक है ...
इसके अलावा एक छोटे कदम बनाने के लिए और सिर्फ 'from'
क्षेत्र के लिए विदेशी कुंजी जोड़ने की कोशिश की :
ALTER TABLE `messages`
ADD CONSTRAINT `messages_users_fk`
FOREIGN KEY (`from`)
REFERENCES `users` (`id`)
ON DELETE SET NULL
ON UPDATE CASCADE
, ADD INDEX `messages_users_fk_idx` (`from` ASC) ;
त्रुटि थोड़ा अलग है:
ERROR: Error 1825: Failed to add the foreign key constraint on table 'messages'. Incorrect options in FOREIGN KEY constraint 'cook4food/messages_users_fk'.
फ़ील्ड के प्रकार समान हैं (bigint(20) NOT NULL
) क्योंकि इसे अन्य स्टैक ओवरफ्लो थ्रेड में समस्या का कारण बताया गया था। मेरी टेबल विभाजित नहीं हैं (MySQL मैनुअल इन्हें इनो डीबी में विदेशी कुंजी बाधाओं के लिए सीमा के रूप में बताता है)। 'messages'
तालिका वर्तमान में कोई पंक्ति नहीं रखती है, इसलिए संग्रहीत डेटा किसी भी तरह से समस्या नहीं हो सकता है। मैं अटक गया हूँ, कृपया मदद करें।
+1 उनके साथ खेलने के लिए वास्तविक 'CREATE तालिका' कथन देखने के लिए लवली :) –