6
votes

Erreur 2006: "Server MySQL est parti" en utilisant Python, Bouteille Microframework et Apache

Après avoir accédé à mon application Web en utilisant:
- Python 2.7
- La bouteille Micro Framework v. 0.10.6
- Apache 2.2.22
- Mod_wsgi
- sur le serveur Ubuntu 12.04 64 bits; Je reçois cette erreur après plusieurs heures: xxx pré>

J'utilise MySQL - l'autochtone inclus dans Python. Il arrive généralement quand je n'accumule pas le serveur. J'ai essayé de fermer toutes les connexions que je fais, à l'aide de ceci: p> xxx pré>

où dB est l'appel standard mysqldb.Connection (). P>

Le fichier my.cnf a l'air comme ceci: p>

key_buffer      = 16M
max_allowed_packet  = 128M
thread_stack        = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10


1 commentaires

4 Réponses :


25
votes

Ceci est une erreur mysql, pas de Python.

La liste des causes possibles et des solutions possibles est ici: Manuel de référence MySQL 5.5: C .5.2.9. MySQL Server est parti .

Les causes possibles incluent:

  • Vous avez essayé d'exécuter une requête après la fermeture de la connexion au serveur. Cela indique une erreur logique dans l'application qui devrait être corrigée.
  • Une application client exécutée sur un autre hôte ne dispose pas des privilèges nécessaires pour se connecter au serveur MySQL à partir de cet hôte.
  • Vous avez rencontré un délai d'attente du côté serveur et la reconnexion automatique du client est désactivée (l'indicateur de reconnexion de la structure MySQL est égal à 0).
  • Vous pouvez également obtenir ces erreurs si vous envoyez une requête sur le serveur incorrect ou trop grand. Si MySQLD reçoit un paquet trop grand ou hors de l'ordre, il suppose que quelque chose a mal tourné avec le client et ferme la connexion. Si vous avez besoin de grosses requêtes (par exemple, si vous travaillez avec de grosses colonnes blob), vous pouvez augmenter la limite de requête en réglant le serveur MAX_ALED_PACKET Variable, qui a une valeur par défaut de 1 Mo. Vous devrez peut-être aussi augmenter la taille maximale du paquet sur la fin du client. Plus d'informations sur la définition de la taille du paquet est donnée dans Section C.5.2.10, " Paquet trop grand ".
  • Vous obtenez également une connexion perdue si vous envoyez un paquet 16 Mo ou plus, si votre client est plus âgé que 4.0.8 et votre serveur est de 4,0,8 et plus, ou de l'inverse.
  • et ainsi de suite ...

    En d'autres termes, il y a beaucoup de causes possibles. Passez à travers cette liste et vérifiez chaque cause possible.


7 commentaires

Merci pour la réponse rapide. J'ai lu sur ce document en vain, la majeure partie de cela ne s'applique pas. La seule chose à laquelle je pouvais penser était la partie de reconnexion automatique, qui remonte à mon essai / sauf l'idée. Sauf s'il y a une autre façon de renouer automatiquement à l'aide de Python


Ok la reconnexion automatique a fini par travailler. Merci pour votre aide, c'était facile!


En fait, la solution n'a pas fonctionné. Il y a toujours une erreur après que j'ai quitté l'application pendant environ 24 heures. Je pense qu'une nouvelle question serait comment créer des reconnexions automatiques à l'aide de Python?


@Jamie: Avez-vous essayé tous les points de la liste que j'ai liés? Sinon, exactement quels points vous n'avez pas pu résoudre, en plus des reconnexions automatisées?


Juste cette clause: Vous avez rencontré un délai d'attente du côté serveur et la reconnexion automatique du client est désactivée (l'indicateur de reconnexion de la structure MySQL est égal à 0). Merci pour votre aide, Tadeck. Comment allez-y le régler pour renouer automatiquement?


@Jamie: Il y a au moins une solution pour ce problème spécifique: Stackoverflow.com/Questtions/207981/... . Quoi qu'il en soit, bon travail pour passer à travers tous les éléments de la liste - le dernier qui reste doit être vrai. D'ailleurs. Comment avez-vous éliminé la possibilité de trouver un bogue de MySQL? ;)


@Edeck votre réponse m'aidez beaucoup et économisez au moins 1 jour de mon temps. Merci beaucoup .



-3
votes

Pour moi, ceci a été corrigé à l'aide de xxx

au lieu de xxx

et ensuite xxx


0 commentaires

0
votes

Assurez-vous que vous n'essayez pas de vous engager dans un objet MySQLDB fermé


0 commentaires

0
votes

Une réponse à une question (très étroitement liée) a été postée ici: https://stackoverflow.com/a/982873/ 209532

Il concerne directement le pilote MySQLDB (MySQL-Python (MySQL-Python (MySQL) et MySQLClient (Fourchette maintenue)), mais l'approche est la même pour un autre pilote que ne prennent pas en charge la reconnexion automatique.


0 commentaires