Les erreurs ERROR '...' not found (errno: 23)
, Can't open file: ... (errno: 24)
ou n'importe quelle erreur avec errno 23
ou errno 24
, signifie que vous n'avez pas alloué assez de pointeurs de fichiers pour MySQL. Vous pouvez utiliser l'utilitaire perror
pour avoir une description de la signification de l'erreur :
shell> perror 23
File table overflow
shell> perror 24
Too many open files
Le problème est que mysqld
tente de garder ouvert trop de fichiers simultanément. Vous pouvez limiter le nombre de fichier ouvert simultanément, ou bien augmenter le nombre autorisé de fichier ouverts.
Pour réduire le nombre de fichiers ouverts par mysqld
, réduisez la taille du fichier de cache des tables, avec l'option -O table_cache=32
de safe_mysqld
(la valeur par défaut est de 64). Réduire la valeur de max_connections
réduira aussi le nombre de fichiers ouverts (par défaut, 90).
Pour changer le nombre maximum de pointeurs de fichiers simultané dans mysqld
, modifiez le script safe_mysqld
. Il y a une ligne du script mise en commentaire et qui vaut : -out line ulimit -n 256
. Vous pouvez supprimer le caractère de commentaire '#'
, et changer la valeur par défaut de 256 par la valeur que vous souhaitez.
ulimit permet d'augmenter le nombre de pointeur de fichiers, mais sa valeur sera limité par le système d'exploitation. Si vous donnez une valeur qui est supérieure à ce que votre système d'exploitation peut supporter, elle sera inefficace. Consultez la documentation de votre système d'exploitation pour connaître cette valeur.
Notez que si vous lancez un shell tcsh
, ulimit
ne fonctionnera pas! tcsh
affichera aussi les valeurs incorrectes si vous demandez les valeurs courantes! Dans ce cas, il vaut mieux démarrer safe_mysqld
avec sh
!