DDL dans InnoDB n'est pas transactionnel, il est donc possible que les informations d'un fichier .frm et du dictionnaire InnoDB soient différentes. Dans votre cas, il semble que le fichier .frm soit manquant, mais il existe un enregistrement orphelin dans le dictionnaire (en fait, des enregistrements dans quelques tables SYS_* du dictionnaire).
Vous ne pouvez pas facilement supprimer un enregistrement du dictionnaire. Vous avez besoin d'un fichier .frm respectif pour que MySQL transmette votre DROP au niveau InnoDB. Avec RDS, vous ne pouvez pas le faire.
Mais vous pouvez DROP toute la base de données. Dans ce cas, InnoDB supprimera tous les enregistrements du dictionnaire, y compris celui qui est orphelin.
Donc, pour nettoyer votre dictionnaire, je vous suggère de suivre :
- Arrêtez tout trafic vers MySQL, rendez-le en lecture seule
- Créer une base de données temporaire
adstudio_tmp
RENAME
tous les tableaux deadstudio
versadstudio_tmp
DROP DATABASE adstudio
. À ce stade, il est vide. LeDROP
effacera toutes les entrées du dictionnaire InnoDB.RENAME
toutes les tables de retour deadstudio_tmp
àadstudio
Après cela, le dictionnaire devrait être propre et vous pourrez créer votre data_feed_param
.
J'ai décrit un problème similaire après ALTER infructueux TABLE . Consultez-le pour plus de détails.