1030 Erreur 28 du moteur de stockage

205

Je travaille sur un projet où j'ai besoin de créer une base de données avec 300 tables pour chaque utilisateur qui souhaite voir l'application de démonstration. cela fonctionnait bien mais aujourd'hui, quand je testais avec un nouvel utilisateur pour voir une démo, il m'a montré ce message d'erreur

1030 Got error 28 from storage engine

Après avoir passé un peu de temps sur Google, j'ai trouvé que c'était une erreur liée à l'espace de la base de données ou aux fichiers temporaires. J'ai essayé de le réparer mais j'ai échoué. maintenant je ne suis même plus capable de démarrer mysql. Comment puis-je résoudre ce problème et je voudrais également augmenter la taille au maximum afin de ne pas faire face au même problème encore et encore.

Scorpion
la source
1
Dire l'évidence ... avez-vous suffisamment d'espace libre sur la partition où les données mysql sont stockées? Sur quelle plateforme utilisez-vous? Localhost ou une société d'hébergement?
DCoder
@DCoder: - J'ai un serveur sur le cloud Amazon
ScoRpion
1
@ShowketBhat J'ai le même problème, mon /tmpdossier est d'utiliser à 100% de l'espace. Est-il correct de supprimer tous les fichiers de ce dossier / tmp? Et une autre question, pourquoi il ne supprime pas automatiquement?
Dima Deplov

Réponses:

412

Erreur Mysql " 28 du moteur de stockage " - signifie " espace disque insuffisant ".

Pour afficher l'espace disque, utilisez la commande ci-dessous.

myServer# df -h

Les résultats doivent être comme ça.

Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/vdisk     13G     13G     46M   100%    /
devfs         1.0k    1.0k      0B   100%    /dev
Oleksandr Diudiun
la source
6
Pour plus d'informations, vous obtiendrez la même erreur si le système de fichiers / tmp atteint 100% d'utilisation.
Kumar
1
Même si vous avez votre mys_l data_dir dans une autre partition (ou disque) qui a de l'espace libre, vous devez avoir de l'espace libre sur / et / tmp (bien sûr, vous pourriez en avoir les derniers sur une autre partition / disque)
Diego Andrés Díaz Espinoza
1
Vous avez sauvé ma journée, j'ai trouvé un fichier de 390 Go de journal lent ((
mulya
1
Bonne réponse. Cela m'a fait gagner beaucoup de temps. +1
Pratik Soni
34

Pour développer cela (même s'il s'agit d'une question plus ancienne); Il ne s'agit probablement pas de l'espace MySQL lui-même, mais de l'espace en général, en supposant que les fichiers tmp ou quelque chose comme ça. Mon répertoire de données mysql n'était pas plein, la partition / (root) était

Maarten
la source
10

J'ai eu le même problème dans AWS RDS. Cela était dû à l'espace libre (espace de stockage du disque dur) était plein. Vous devez augmenter votre espace ou supprimer certaines données.

Gregory Burns
la source
8

Mon / tmp était% 100. Après avoir supprimé tous les fichiers et redémarré mysql, tout a bien fonctionné.

Sami Onur Zaim
la source
2

Mon dossier / var / log / apache2 était de 35 g et certains journaux dans / var / log totalisaient les 5 g restants de mon disque dur de 40 g. J'ai effacé tous les journaux * .gz et après m'être assuré que les autres journaux ne feraient pas de mauvaises choses si je les gâchais, je les ai également effacés.

echo "clear" > access.log

etc.

PyromonkeyGG
la source
3
C'est une façon très étrange d'effacer un fichier journal, n'est-ce pas? Pourquoi ne pas simplement le rm?
user1175849
3
Peut-être que vous pouvez alors conserver le fichier et les autorisations?
Zachary Dahan
9
Je recommande d'utiliser truncatepour effacer les journaux,truncate -s 0 access.log
2

Vérifiez votre / sauvegarde pour voir si vous pouvez supprimer une ancienne sauvegarde non nécessaire.

Jacob
la source
1

J'ai eu un problème similaire, à cause de mes journaux binaires de réplication .

Si tel est le cas, créez simplement un cronjob pour exécuter cette requête tous les jours:

PURGE BINARY LOGS BEFORE DATE_SUB( NOW(), INTERVAL 2 DAY );

Cela supprimera tous les journaux binaires datant de plus de 2 jours.

J'ai trouvé cette solution ici .

GabrielOliv
la source
0

Un simple: $ sth-> finish (); Cela vous éviterait probablement de vous inquiéter à ce sujet. Mysql utilise l'espace tmp du système au lieu de son propre espace.

Craig
la source
0
sudo su


cd /var/log/mysql

et enfin tapez: > mysql-slow.log

Cela a fonctionné pour moi

Kaushik Thanki
la source
0

Supprimez la base de données des problèmes, puis redémarrez le service mysql ( sudo service mysql restart, par exemple).

Sergio Belevskij
la source