Essa é realmente uma mensagem informativa.
Provavelmente, você está OPTIMIZE em uma tabela InnoDB (tabela usando o mecanismo de armazenamento InnoDB, em vez do mecanismo de armazenamento MyISAM ).
InnoDB não suporta o OPTIMIZE da mesma forma que MyISAM. Ele faz algo diferente. Ele cria uma tabela vazia e copia todas as linhas da tabela existente para ela e, essencialmente, exclui a tabela antiga e renomeia a nova tabela e, em seguida, executa um ANALYZE para reunir estatísticas. Isso é o mais próximo que o InnoDB pode chegar de um OPTIMIZE.
A mensagem que você está recebendo é basicamente o servidor MySQL repetindo o que o mecanismo de armazenamento InnoDB disse ao servidor MySQL:
Tabela não suporta otimizar é o mecanismo de armazenamento InnoDB dizendo ...
"Eu (o mecanismo de armazenamento InnoDB) não faço uma operação OPTIMIZE como meu amigo (o mecanismo de armazenamento MyISAM) faz."
"fazendo recriar + analisar em vez disso" é o mecanismo de armazenamento InnoDB dizendo ...
"Decidi realizar um conjunto diferente de operações que obterá um resultado equivalente."
OPTIMIZE TABLE
funciona bem com o mecanismo InnoDB de acordo com o artigo de suporte oficial: http://dev.mysql.com/doc/refman/5.5/en/optimize-table.htmlVocê notará que otimizar tabelas InnoDB reconstruirá a estrutura da tabela e atualizará as estatísticas de índice (algo como
ALTER TABLE
)Lembre-se de que esta mensagem pode ser apenas informativa e a informação mais importante é o status da sua consulta: OK!
fonte
A melhor opção é criar uma nova tabela com as mesmas propriedades
Renomeie NEW.NAME.TABLE e TABLE.CRASH
Depois de trabalhar bem, delete
fonte
A melhor opção é criar uma nova tabela, copiar as linhas para a tabela de destino, eliminar a tabela real e renomear a tabela recém-criada. Este método é bom para tabelas pequenas,
fonte