Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como faço para corrigir a corrupção do InnoDB bloqueando um nome de tabela desde a criação (errno:-1) no AWS RDS?


DDL no InnoDB não é transacional, então é possível que as informações em um arquivo .frm e no dicionário InnoDB sejam diferentes. No seu caso, parece que o arquivo .frm está ausente, mas há um registro órfão no dicionário (bem, na verdade, registros em algumas tabelas SYS_* do dicionário).

Você não pode excluir facilmente um registro do dicionário. Você precisa de um arquivo .frm respectivo para que o MySQL passe seu nível DROP para InnoDB. Com RDS você não pode fazer isso.

Mas você pode DROP todo o banco de dados. Nesse caso, o InnoDB removerá todos os registros do dicionário, incluindo o órfão.

Então, para limpar seu dicionário, sugiro o seguinte:
  1. Parar todo o tráfego para o MySQL, torná-lo somente leitura
  2. Crie um banco de dados temporário adstudio_tmp
  3. RENAME todas as tabelas de adstudio para adstudio_tmp
  4. DROP DATABASE adstudio . Neste ponto está vazio. O DROP apagará todas as entradas no dicionário InnoDB.
  5. RENAME todas as tabelas de adstudio_tmp para adstudio

Depois disso, o dicionário deve estar limpo e você poderá criar seu data_feed_param .

Descrevi um problema semelhante após ALTER sem sucesso TABELA . Confira para mais detalhes.