The world's most popular open source database
Si obtiene ERROR '...' not found (errno: 23),
Can't open file: ... (errno: 24), o cualquier otro error con errno 23 o errno
24 de MySQL, significa que no tiene reservados suficientes descriptores de archivo para el servidor MySQL.
Puede utilizar la utilidad perror para obtener una descripción de lo que el número de error significa:
shell> perror 23 Error code 23: File table overflow shell> perror 24 Error code 24: Too many open files shell> perror 11 Error code 11: Resource temporarily unavailable
El problema aquí es que mysqld está intentando mantener abiertos demasiados archivos de manera simultánea. Puede decirle a mysqld que no abra tantos archivos a la vez, o incrementar el número de descriptores disponibles para mysqld.
Para decirle a mysqld que mantenga abiertos menos archivos de manera
simultánea, puede hacer la cache de la tabla mas pequeña reduciendo el valor de la variable
de sistema table_cache (el valor por defecto es 64). Reducir
el valor de max_connections también reduce el número de archivos
abiertos (el valor por defecto es 100).
Para cambiar el número de descriptores de archivo disponibles para
mysqld, puede utilizar la opción --open-files-limit
para mysqld_safe o (desde MySQL 3.23.30) establecer la variable de
sistema open_files_limit. Consulte
Sección 5.3.3, “Variables de sistema del servidor”. La manera más fácil de establecer estos valores
es añadir una opción a su archivo de opciones. Consulte Sección 4.3.2, “Usar ficheros de opciones”.
Si usted dispone de una versión antigua de mysqld que no soporta
el establecimiento del límite de archivos abiertos, puede editar el script
mysqld_safe. Hay una línea comentada en el script,
ulimit -n 256. Puede eliminar el carácter '#'
para descomentar esta línea, y cambiar el número 256 para establecer
el número de descriptores de archivos que serán puestos a disposición de
mysqld.
--open-files-limit y ulimit
pueden incrementar el número de descriptores de archivo, pero sólo hasta el límite
impuesto por el sistema operativo. Hay también un límite impuesto que puede ser
sobreseido sólo si inicia mysqld_safe o
mysqld como root (simplemente recuerde que
necesita iniciar el servidor con la opción --user en este caso
para que no continue ejecutándose como root tras el inicio).
Si usted necesita incrementar el límite del sistema operativo sobre el número de
descriptores de archivo disponibles para cada proceso, consulte la documentación de su
sistema operativo.
Nota: ¡Si usted ejecuta el shell tcsh, ulimit no funciona! tcsh también informa de valores incorrectos cuando le interroga por los límites actuales. En este caso, debería iniciar mysqld_safe utilizando sh.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

