sql >> Database teknologi >  >> RDS >> Mysql

Hvordan løser jeg InnoDB-korruption, der låser et tabelnavn fra oprettelse (fejlnr:-1) på AWS RDS?

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:

  1. Stop al trafik til MySQL, gør den skrivebeskyttet
  2. Opret en midlertidig database adstudio_tmp
  3. RENAME alle tabeller fra adstudio til adstudio_tmp
  4. DROP DATABASE adstudio . På dette tidspunkt er det tomt. DROP vil slette alle indgange i InnoDB-ordbogen.
  5. RENAME alle tabeller tilbage fra adstudio_tmp til adstudio

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.



  1. Hvordan kan jeg registrere en oprettelse, opdatering, sletningsforespørgsel er vellykket i Codeigniter

  2. Laravel Homestead SQLSTATE[HY000] [2002] Forbindelse nægtet efter serverflytning

  3. Mysql:Rækkefølgen af ​​resultater med vælg <feltnavn> fra er forskellig fra rækkefølgen af ​​resultater med vælg * fra

  4. Flet to tabeller i én SQL-forespørgsel og gør datoværdierne unikke