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