quinta-feira, 9 de maio de 2013

MySQL ERROR 1 (HY000): Não é possível criar / gravar no arquivo

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-error-1-hy000-cant-createwrite-to.html

> Desc foo_table; 

ERROR 1 (HY000): Can't create/write to file '/tmp/#sql_3ff6_0.MYI' (Errcode: 13 - Permission denied) 

Agora, esse erro está documentado: http://dev.mysql.com/doc/refman/5.6/en/cannot-create.html 

Esta é uma correção para a frente. O que aconteceu com as permissões na pasta / tmp?Porque ele não está permitindo que escreve. Então, primeiro tem que corrigir isso, então começar a olhar para o que ou quem mudou as permissões no diretório. 

chmod 1777 /tmp 

Vou usar esse erro como um exemplo, embora seja bastante simples de ver e corrigir. 

Primeiro olhar para toda a mensagem de erro e não se concentrar no primeiro erro que você vê. 
Por exemplo, se você tem um Errcode: 

  • não se concentrar em um ERRO
  • não se concentrar em HY000

Você estaria perdendo o seu tempo quando o Errcode dá-lhe todas as informações que você precisa. 
Se isso passou a ser a única informação mensagem de erro que foi passado para você, então você não tem recursos disponíveis para procurar erros: 



Também gostaria de salientar que você deve verificar o dobro do erro de login para confirmar todas as mensagens de erro. 
Só porque alguém lhe envia um erro não significa que ele é toda a história, sempre verifique seus logs. 


Se você se depara com um erro que lhe dá pouca descrição, é verdade que você tem a capacidade de aprender mais sobre o erro. 

"Descrevendo o último erro encontrado durante uma chamada para um sistema ou função biblioteca." http://man7.org/linux/man-pages/man3/perror.3.html 


# perror 13
OS error code 13: Permission denied 


BTW .. relacionado com o erro acima, também é possível alterar o local de tmpdir se que era necessário. Neste caso, ele não era, mas você precisar alterar ou substituir os padrões que você pode encontrar o seu tmpdir atual com este:
> select @@tmpdir;
+----------+
| @@tmpdir |
+----------+
| /tmp |
+----------+ 
Você pode editar o my.cnf e lugar tmpdir = / tmp qualquer local que você preferir.