Thursday, May 9, 2013

ERROR MySQL 1 (HY000): No se puede crear / escribir en el archivo

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) 

Ahora se documenta este error: http://dev.mysql.com/doc/refman/5.6/en/cannot-create.html 

Se trata de una solución sencilla. ¿Qué pasó con los permisos de la carpeta / tmp? Debido a que no está permitiendo que escribe. Así que primero tiene que arreglar eso y comienza a mirar en qué o quién ha cambiado los permisos en el directorio. 

chmod 1777 /tmp 

Yo uso este error como un ejemplo, a pesar de que es bastante sencillo de ver y luego fijar. 

Primer vistazo a la totalidad del mensaje de error y no se centran en el primer error que se ve. 
Por ejemplo, si usted tiene una Errcode: 

  • no se centran en ERROR 1
  • no se centran en HY000

Usted estaría perdiendo el tiempo cuando el Errcode le da toda la información que necesita. 
Si eso pasó a ser la única información de los mensajes de error que se ha pasado a usted, entonces usted no tiene los recursos disponibles para buscar errores: 



También me gustaría destacar que debe revisar el registro de errores para confirmar todos los mensajes de error. 
El hecho de que alguien le envía un error no significa que es toda la historia, siempre verifique que los registros. 


Si usted se encuentra con un error que le da poca descripción, es cierto que usted tiene la capacidad de aprender más sobre el error. 

"Describiendo el último error encontrado durante una llamada a un sistema o función de la biblioteca." http://man7.org/linux/man-pages/man3/perror.3.html 


# perror 13
OS error code 13: Permission denied 


BTW .. relacionada con el error anterior, también es posible cambiar su ubicación tmpdir, si lo que se requería. En este caso no lo era, pero alguna vez tiene que cambiar o anular los valores predeterminados que puede encontrar su tmpdir actual por el siguiente:
> select @@tmpdir;
+----------+
| @@tmpdir |
+----------+
| /tmp |
+----------+ 
Puede editar el my.cnf y lugar tmpdir = / tmp la ubicación que prefiera.