InnoDB में DDL लेन-देन संबंधी नहीं है, इसलिए यह संभव है कि .frm फ़ाइल और InnoDB डिक्शनरी में जानकारी भिन्न हो। आपके मामले में ऐसा लगता है कि .frm फ़ाइल गायब है, लेकिन शब्दकोश में एक अनाथ रिकॉर्ड है (ठीक है, वास्तव में कुछ शब्दकोश SYS_* तालिकाओं में रिकॉर्ड)।
आप शब्दकोश से किसी रिकॉर्ड को आसानी से नहीं हटा सकते। आपको एक संबंधित .frm फ़ाइल की आवश्यकता है ताकि MySQL आपके DROP को InnoDB स्तर पर भेज सके। आरडीएस के साथ आप ऐसा नहीं कर सकते।
लेकिन आप पूरे डेटाबेस को DROP कर सकते हैं। उस स्थिति में InnoDB अनाथ सहित शब्दकोश से सभी रिकॉर्ड हटा देगा।
इसलिए, आपके शब्दकोश को साफ करने के लिए मैं निम्नलिखित का सुझाव देता हूं:
- MySQL के सभी ट्रैफ़िक को रोकें, इसे केवल पढ़ने के लिए बनाएं
- एक अस्थायी डेटाबेस बनाएं
adstudio_tmp RENAMEadstudio. की सभी तालिकाएं करने के लिएadstudio_tmpDROP DATABASE adstudio. इस समय यह खाली है।DROPInnoDB शब्दकोश में सभी प्रविष्टियाँ मिटा देगा।RENAMEसभी टेबलadstudio_tmp. से वापस सेadstudio
इसके बाद शब्दकोश साफ होना चाहिए और आप अपना data_feed_param बना पाएंगे ।
मैंने असफल ALTER के बाद भी इसी तरह की समस्या का वर्णन किया है। टेबल . अधिक विवरण के लिए इसे देखें।