J'ai l'erreur suivante avec l'une de nos applications Web -
Query3 failed: Error writing file '/tmp/MY1fnqpm' (Errcode: 28) ... INSERT MailList... (removed the rest of the query for security reasons)
Des idées - s'agit-il d'un problème d'espace disque sur mon serveur?
Utilisez la commande perror
:
$ perror 28
OS error code 28: No space left on device
À moins que les codes d'erreur ne diffèrent sur votre système, votre système de fichiers est saturé.
Nous avons rencontré un problème similaire, le problème était que le répertoire/tmp utilisé par MySQL était utilisé (configuration par défaut). Et/tmp était situé sur sa propre partition, qui disposait de trop peu d’espace pour les requêtes MySQL volumineuses.
Pour plus de détails, cherchez cette réponse: https://stackoverflow.com/a/3716778/994302
J'avais le même problème, mais l'espace disque était correct (seulement 40% de la capacité) . Le problème était les inodes, j'avais trop de petits fichiers et mes inodes étaient pleins.
Vous pouvez vérifier l'état d'inode avec df -i
L'erreur signifie que vous ne disposez pas de suffisamment d'espace pour créer les fichiers temporaires requis par MySQL.
La première chose que vous pouvez essayer est d’augmenter la taille de votre partition /tmp/
. Si vous êtes sous LVM, vérifiez la commande lvextend
.
Si vous ne pouvez pas augmenter la taille de votre partition /tmp/
, vous pouvez travailler dans la configuration de MySQL, éditez le fichier my.cnf
(généralement sur /etc/mysql/my.cnf
) et recherchez cette ligne:
tmpdir = /tmp/
Changez-le pour ce que vous voulez (exemple /var/tmp/
). Assurez-vous simplement de disposer d'espace et d'attribuer des droits en écriture à l'utilisateur mysql dans le nouveau répertoire.
J'espère que cela t'aides!
Exécutez le code suivant:
du -sh/var/log/mysql
Peut-être que les journaux binaires mysql ont rempli la mémoire. Si oui, suivez la suppression des anciens journaux et redémarrez le serveur. Ajoutez également dans my.cnf:
expire_logs_days = 3
Pour les utilisateurs de xampp: d'après mon expérience, le problème était dû à un fichier nommé "0" situé dans le dossier "mysql". La taille était trop grande (le mien a explosé à environ 256 Gb). Son élimination a résolu le problème.
J'ai eu la même erreur et le problème était simplement le manque d'espace sur ma machine virtuelle. J'ai supprimé des fichiers inutiles et cela a recommencé à fonctionner.
mon allocation de mémoire/espace disque ressemblait à ceci
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 37G 37G 127M 100% /
...
Aujourd'hui. J'ai le même problème ... ma solution:
1) vérifier l'inode: df -i
J'ai vu:
root@vm22433:/etc/mysql# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 124696 304 124392 1% /dev
tmpfs 127514 452 127062 1% /run
/dev/vda1 1969920 1969920 0 100% /
tmpfs 127514 1 127513 1% /dev/shm
tmpfs 127514 3 127511 1% /run/lock
tmpfs 127514 15 127499 1% /sys/fs/cgroup
tmpfs 127514 12 127502 1% /run/user/1002
2) J'ai commencé à regarder quels dossiers utilisent le nombre maximum d'inods:
for i in /*; do echo $i; find $i |wc -l; done
j'ai vite trouvé dans le dossier/home/tomnolane/tmp, qui contenait un grand nombre de fichiers.
3) J'ai supprimé le dossier/home/tomnolane/tmp PROFIT.
4) vérifié:
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 124696 304 124392 1% /dev
tmpfs 127514 454 127060 1% /run
/dev/vda1 1969920 450857 1519063 23% /
tmpfs 127514 1 127513 1% /dev/shm
tmpfs 127514 3 127511 1% /run/lock
tmpfs 127514 15 127499 1% /sys/fs/cgroup
tmpfs 127514 12 127502 1% /run/user/1002
c'est bon.
5) restart mysql service
- c'est bon !!!!
Cette erreur se produit lorsque vous ne disposez pas de suffisamment d'espace dans la partition. Généralement, MYSQL utilise/tmp sur les serveurs linux. Cela peut arriver avec certaines requêtes parce que la recherche retournait beaucoup de données, ou même simplement trier beaucoup de données pour créer de gros fichiers temporaires.
Editez votre /etc/mysql/my.cnf
tmpdir =/votre/nouveau/répertoire
par exemple
tmpdir =/var/tmp
Devrait être alloué avec plus d'espace que/tmp qui est habituellement dans sa propre partition.
Vous pouvez également essayer d'utiliser cette ligne si l'autre ne fonctionne pas:
du -sh/var/lib/mysql/nom_bdd
Vous voudrez peut-être également vérifier auprès de votre hôte et voir quelle taille ils permettent à vos bases de données.