Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak naprawić uszkodzenie InnoDB blokujące nazwę tabeli podczas tworzenia (errno:-1) na AWS RDS?

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:

  1. Zatrzymaj cały ruch do MySQL, ustaw go tylko do odczytu
  2. Utwórz tymczasową bazę danych adstudio_tmp
  3. RENAME wszystkie tabele z adstudio do adstudio_tmp
  4. DROP DATABASE adstudio . W tym momencie jest pusty. DROP usunie wszystkie wpisy w słowniku InnoDB.
  5. RENAME wszystkie tabele z powrotem z adstudio_tmp do adstudio

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Samouczek MySQL:klauzula MySQL IN (podstawowa)

  2. Zapytanie SQL wielu tabel, z wieloma sprzężeniami i polem kolumny z listą oddzieloną przecinkami

  3. polecenie mysqldump nie działa?

  4. Problem z Kreatorem źródeł danych MySQL dla programu Visual Studio / Visual Studio 2017. Odwołanie do obiektu nie jest ustawione na instancję obiektu

  5. Czy możliwe jest UPDATE tabeli JOINed za pomocą Active Record Codeigniter?