Em primeiro lugar, você deve saber que chaves e índices são sinônimos no MySQL. Se você olhar a documentação sobre a sintaxe CREATE TABLE , poderá ler:
KEY
normalmente é um sinônimo de INDEX
. O atributo de chave PRIMARY KEY
também pode ser especificado apenas KEY
quando fornecido em uma definição de coluna. Isso foi implementado para compatibilidade com outros sistemas de banco de dados.
Agora, o tipo de erro que você está recebendo pode ser devido a duas coisas:
- Problemas de disco no servidor MySQL
- Chaves / tabelas corrompidas
No primeiro caso, você verá que adicionar um limite à sua consulta pode resolver o problema temporariamente. Se isso tmp
for suficiente para você, provavelmente você tem uma pasta muito pequena para o tamanho das consultas que está tentando fazer. Você pode então decidir ou aumentar tmp
ou diminuir suas consultas! ;)
Às vezes, tmp
é grande o suficiente, mas ainda fica cheio, você precisará fazer uma limpeza manual nessas situações.
No segundo caso, existem problemas reais com os dados do MySQL. Se você puder inserir novamente os dados facilmente, recomendo apenas descartar / recriar a tabela e inserir novamente os dados. Se você não puder, tente consertar a mesa com a mesa REPAIR . É um processo geralmente demorado que pode muito bem falhar.
Veja a mensagem de erro completa que você recebe:
Arquivo de chave incorreto para a tabela 'FILEPATH.MYI'; tente consertá-lo
Ele menciona na mensagem que você pode tentar consertá-lo. Além disso, se você olhar o FILEPATH real que obtém, pode descobrir mais:
se for algo parecido /tmp/#sql_ab34_23f
, significa que o MySQL precisa criar uma tabela temporária devido ao tamanho da consulta. Ele armazena em / tmp, e que não há espaço suficiente em seu / tmp para essa tabela temporária.
se ele contiver o nome de uma tabela real, significa que essa tabela muito provavelmente está corrompida e você deve repará-la.
Se você identificar que seu problema é com o tamanho de / tmp, basta ler esta resposta a uma pergunta semelhante para a correção: MySQL, Erro 126: Arquivo de chave incorreto para a tabela .