PrécédentTable des matière Suivant
 

18.2.1 Erreur MySQL server has gone away

Cette section couvre aussi l'erreur Lost connection to server during query .

La raison la plus probable qui conduit à une erreur MySQL server has gone away est que le serveur a dépassé le délai d'attente, et qu'il a terminé la connexion. Par défaut, les connexions sont terminée après 8 heures d'inaction.

Vous pouvez vous assurez qu le serveur MySQL fonctionne toujours avec la commande mysqladmin version et en observant le temps de vie.

Si vous avez un script en cours, vous n'avez qu'à le relancer, et le client se reconnectera automatiquement.

Dans cette situation vous pouvez obtenir les erreurs suivantes (suivant l'OS) :

Vous pouvez voir ces erreurs survenir si vous émettez une erreur trop grande, ou de taille incorrecte. Si mysqld recoit un paquet trop grand ou hors service, il suppose alors que quelque chose n'a pas fonctionné du coté du client, et il termine la connexion. Si vous avez des requêtes de grande taille (par exemple, si vous avez des colonnes de type BLOB), il vaut mieux augmenter la taille maximale des requête lors du démarrage de mysqld avec l'option -O max_allowed_packet=# option (par défaut : 1M). La mémoire supplémentaire est allouée à la volée, ce qui permet à mysqld de n'utiliser plus de mémoire que lorsque vous émettrez une énorme requête, ou que vous vous attendrez à une énorme réponse.@node Can not connect to server, Blocked host, Gone away, Common errors

18.2.2 Erreur Can't connect to [local] MySQL server

Les clients MySQL peuvent se connecter à un serveur mysqld de deux manières différentes : soit les sockets Unix, qui se connecte via un fichier système (par défaut ``/tmp/mysqld.sock''), ou par TCP/IP, qui se connecte à un numéro de port. Les sockets Unix sont beaucoup plus rapides que les sockets TCP/IP mais uniquement sur le même ordinateur. Les sockets Unix sont utilisées par défaut si vous ne spécifiez par de nom d'hôte, ou si vous vous connectez à localhost.

L'erreur Can't connect to ... signifie normalement qu'il n'y a pas de serveur MySQL sur le système, ou que vous utilisez un faux fichier de socket Unix ou un mauvais port TCP/IP lorsque vous vous connectez au serveur mysqld.

Commencez par vérifier (avec ps) qu'il y a bien un processus nommé mysqld sur votre serveur! Si il n'y en a pas, il vaut mieux le démarrer. Confère section 4.15.2 Problèmes avec le serveur MySQL.

Si un serveur mysqld tourne, vous pouvez vérifier le serveur avec les connexions suivantes (le numéro de port ou le nom de fichier de socket Unix peuvent différer de votre système, bien sur...) :

shell> mysqladmin version
shell> mysqladmin -h `hostname` version
shell> mysqladmin -h `hostname` --port=3306 version
shell> mysqladmin -h 'ip for your host' version
shell> mysqladmin --socket=/tmp/mysql.sock version

Notez que l'utilisation de guillemets arrière (backquotes) plutôt que des guillemets simples autour de hostname; force l'affichage de hostname (i.e., l'hôte courant), à utiliser ultérieurement dans la commande mysqladmin.

Voici quelques raisons qui causent l'erreur Can't connect to local MySQL server :

shell> mysqladmin -h `hostname` version
shell> ./configure --with-unix-socket-path=/path/to/socket

Vous pouvez aussi lancer safe_mysqld avec l'option --socket=/path/to/socket et assigner une valeur à la variable d'environnement MYSQL_UNIX_PORT avant de démarrer votre client MySQL. Puis vous lancez le serveur mysqld avec l'option --socket=/path/to/socket. Si vous changez le chemin de la socket sur le serveur, vous devez le notifier aux clients MySQL. Vous pouvez le faire avec la variable d'environnement MYSQL_UNIX_PORT ou en fournissant aux clients un chemin jusqu'à la socket. Ainsi, vous pouvez tester la commande suivante :

shell> mysqladmin --socket=/path/to/socket version

Si vous avez le message d'erreur Can't connect to MySQL server on un_nom_d_hote, vous pouvez essayer les solutions suivantes :

Table des matières
PrécédentNexen.netSuivant