DDL i InnoDB er ikke transaktionsbestemt, så det er muligt, at oplysningerne i en .frm-fil og InnoDB-ordbogen er anderledes. I dit tilfælde ser det ud til, at .frm-filen mangler, men der er en forældreløs post i ordbogen (vel, faktisk optager i få ordbog SYS_*-tabeller).
Du kan ikke nemt slette en post fra ordbogen. Du skal bruge en .frm-fil, så MySQL overfører dit DROP til InnoDB-niveau. Med RDS kan du ikke gøre det.
Men du kan SLIPPE hele databasen. I så fald vil InnoDB fjerne alle poster fra ordbogen inklusive den forældreløse.
Så for at rense din ordbog foreslår jeg følgende:
- Stop al trafik til MySQL, gør den skrivebeskyttet
- Opret en midlertidig database
adstudio_tmp
RENAME
alle tabeller fraadstudio
tiladstudio_tmp
DROP DATABASE adstudio
. På dette tidspunkt er det tomt.DROP
vil slette alle indgange i InnoDB-ordbogen.RENAME
alle tabeller tilbage fraadstudio_tmp
tiladstudio
Herefter skulle ordbogen være ren, og du vil være i stand til at oprette din data_feed_param
.
Jeg beskrev et lignende problem efter mislykket ALTER TABEL . Tjek det for flere detaljer.