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

ERRO 1005 (HY000):Não é possível criar a tabela x (errno:-1)


Esta é uma pergunta antiga, mas acabei de receber isso hoje e encontrei uma solução (e sim com errno =-1).

Nossa tabela é InnoDB e foi criada e destruída a cada poucas horas. Recentemente, iniciamos um servidor escravo para seguir esse mestre. Também usamos a opção "innodb_file_per_table".

O erro ocorreria apenas no escravo, não no mestre. O problema era que recentemente sincronizamos esse escravo com o mestre usando rsync algumas horas antes.

O Rsync copiou o arquivo da tabela, mas foi deletado pelo mestre nesse meio tempo, pois era uma tabela temporária. O arquivo .idb existia, portanto, no escravo, mas não mais no mestre.

Quando o mestre enviou uma solicitação para criar a tabela, o escravo não conseguiu, pois o arquivo já estava lá. O MySQL não sabia que existia uma tabela, pois os metadados diziam que não havia nenhuma tabela lá. Estou assumindo que o MySQL estava tentando criar o arquivo, mas como estava lá, falhou.

No meu caso, a solução foi excluir o arquivo .idb em outra pasta (é claro que com uma cópia de backup primeiro).

Depois disso, o banco de dados nos permitiria criar a tabela, e o escravo seguiria o mestre novamente

Uma maneira melhor de fazer esse rsync seria usar uma opção --delete para remover qualquer arquivo antigo que tenha desaparecido do mestre.

De qualquer forma - você pode não ter essa situação exata como descrevi, mas pode ser simplesmente um arquivo obsoleto que foi deixado lá por um motivo ou outro.