DDL в InnoDB не е транзакционен, така че е възможно информацията в .frm файл и речника на InnoDB да е различна. Във вашия случай изглежда, че .frm файлът липсва, но има осиротел запис в речника (е, всъщност записи в няколко речникови SYS_* таблици).
Не можете лесно да изтриете запис от речника. Нуждаете се от съответен .frm файл, така че MySQL да предаде вашия DROP на ниво InnoDB. С RDS не можете да го направите.
Но можете да ИЗПУСКАТЕ цялата база данни. В този случай InnoDB ще премахне всички записи от речника, включително осиротелия.
И така, за да почистите речника си, предлагам следното:
- Спрете целия трафик към MySQL, направете го само за четене
- Създайте временна база данни
adstudio_tmp
RENAME
всички таблици отadstudio
къмadstudio_tmp
DROP DATABASE adstudio
. В този момент е празен.DROP
ще изтрие всички записи в речника InnoDB.RENAME
всички таблици обратно отadstudio_tmp
къмadstudio
След това речникът трябва да е чист и ще можете да създадете своя data_feed_param
.
Описах подобен проблем след неуспешна ALTER ТАБЛИЦА . Разгледайте го за повече подробности.