DDL w InnoDB nie jest transakcyjny, więc możliwe, że informacje w pliku .frm i słowniku InnoDB są inne. W twoim przypadku wygląda na to, że brakuje pliku .frm, ale w słowniku jest osierocony rekord (cóż, faktycznie rekordy w kilku słownikowych tabelach SYS_*).
Nie można łatwo usunąć rekordu ze słownika. Potrzebujesz odpowiedniego pliku .frm, aby MySQL przekazał Twój DROP do poziomu InnoDB. Z RDS nie możesz tego zrobić.
Ale możesz DROP całą bazę danych. W takim przypadku InnoDB usunie wszystkie rekordy ze słownika, w tym jeden osierocony.
Tak więc, aby wyczyścić słownik, sugeruję wykonanie następujących czynności:
- Zatrzymaj cały ruch do MySQL, ustaw go tylko do odczytu
- Utwórz tymczasową bazę danych
adstudio_tmp
RENAME
wszystkie tabele zadstudio
doadstudio_tmp
DROP DATABASE adstudio
. W tym momencie jest pusty.DROP
usunie wszystkie wpisy w słowniku InnoDB.RENAME
wszystkie tabele z powrotem zadstudio_tmp
doadstudio
Po tym słownik powinien być czysty i będziesz mógł utworzyć swój data_feed_param
.
Opisałem podobny problem po nieudanej ALTER TABELA . Sprawdź to, aby uzyskać więcej informacji.