हालाँकि अन्य उत्तर काफी मददगार हैं, लेकिन मैं अपने अनुभव को भी साझा करना चाहता था।
मुझे उस समस्या का सामना करना पड़ा जब मैंने एक तालिका को हटा दिया idथा जिसे पहले से ही अन्य तालिकाओं ( डेटा के साथ ) में विदेशी कुंजी के रूप में संदर्भित किया जा रहा था और कुछ अतिरिक्त स्तंभों के साथ तालिका को फिर से बनाने / आयात करने की कोशिश की।
मनोरंजन के लिए क्वेरी (phpMyAdmin में उत्पन्न) निम्नलिखित की तरह दिखती है:
CREATE TABLE `the_table` (
`id` int(11) NOT NULL, /* No PRIMARY KEY index */
`name` varchar(255) NOT NULL,
`name_fa` varchar(255) NOT NULL,
`name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
... /* SOME DATA DUMP OPERATION */
ALTER TABLE `the_table`
ADD PRIMARY KEY (`id`), /* PRIMARY KEY INDEX */
ADD UNIQUE KEY `uk_acu_donor_name` (`name`);
जैसा कि आप देख सकते हैं, PRIMARY KEYइंडेक्स को निर्माण ( और डेटा डालने ) के बाद सेट किया गया था जो समस्या पैदा कर रहा था।
उपाय
समाधान PRIMARY KEYतालिका परिभाषा क्वेरी पर सूचकांक को जोड़ने के लिए था idजिसके लिए विदेशी कुंजी के रूप में संदर्भित किया जा रहा था, जबकि इसे उस ALTER TABLEहिस्से से भी हटा दिया गया था जहां सूचकांक निर्धारित किए जा रहे थे:
CREATE TABLE `the_table` (
`id` int(11) NOT NULL PRIMARY KEY, /* <<== PRIMARY KEY INDEX ON CREATION */
`name` varchar(255) NOT NULL,
`name_fa` varchar(255) NOT NULL,
`name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
table2.IDFromTable1औरtable1.ID?