web-dev-qa-db-fra.com

Erreur générale: le serveur MySQL 2006 est parti

C'est l'erreur que je reçois soudainement.

Additional uncaught exception thrown while handling exception.

Original
PDOException: SQLSTATE[70100]: Unknown error: 1317 Query execution was interrupted...my query

Additional
PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away...my query

Après avoir fait quelques recherches, cela ressemble à un module personnalisé, que j'ai fait, qui tente une requête trop volumineuse. Une solution qui semble fonctionner pour beaucoup de gens est la suivante:

  1. Ouvrez my.ini
  2. Changer "max_allowed_packet" de "1m" à "16m" (ou plus)
  3. Enregistrez my.ini et redémarrez MySQL

Cependant, je suis sur un serveur partagé, donc je ne peux pas modifier my.ini, et bien que mon fournisseur m'ait confirmé que la valeur est définie sur 1M, il ne l'augmentera pas.

J'ai également essayé d'ajouter ceci: ini_set('mysqli.reconnect', 'on'); à settings.php. Cela n'a pas résolu le problème.

Quelqu'un connaît-il une autre solution ou contourne-t-il?

Merci.

8
dbj44

Les sociétés d'hébergement mutualisé ne donnent pas le privilège [~ # ~] super [~ # ~] . Si vous l'avez, vous pouvez facilement définir max_allowed_packet à 512M en exécutant simplement ceci:

mysql> SET GLOBAL max_allowed_packet = 1024 * 1024 * 512;

Aucun redémarrage n'est requis. Ensuite, toutes les connexions entrantes par la suite peuvent avoir un paquet 512M .

Tu ne peux pas faire ça:

mysql> SET max_allowed_packet = 1024 * 1024 * 512;

parce que vous obtenez

ERROR 1621 (HY000): SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value

La seule alternative à laquelle je peux penser est de passer à Amazon EC2 et d'y installer MySQL. De cette façon, vous pouvez laisser libre cours à l'édition de my.cnf/my.ini et avoir le [~ # ~] super [~ # ~] privilège.

8
RolandoMySQLDBA

J'ai demandé à mon fournisseur d'augmenter la valeur, mais ils ne l'ont pas fait. Je peux comprendre pourquoi, c'est une entreprise et ils veulent que je paie 29,99 par mois pour un serveur dédié, plutôt que 4,99 pour un serveur partagé.

Cependant, il y a solution: identifier la requête qui est trop grande et la diviser en deux ou plusieurs parties. J'ai divisé mon problème en deux: problème résolu. Inefficace - oui - mais c'est mieux que mon site ne fonctionne pas du tout ou doive payer le supplément.

0
dbj44

Le problème est dû au fait que max_allowed_packet, vous le définissez avec une valeur plus élevée.

Comment résoudre ce problème (si vous êtes sous Windows et utilisez xamp, recherchez le fichier my.ini)
Accédez à xampp\mysql\bin
Ouvrez my.ini
Remplacez "max_allowed_packet" de "1m" par "16m"
Enregistrez my.ini
Redémarrez maintenant MySql via le panneau de configuration XAMPP.

J'ai trouvé cette solution ici. http://minorpoint.blogspot.com/2007/09/mysql-server-has-gone-away.html

0
Yusef