2006 : MySQL server has gone away (CR_SERVER_LOST)
Par PlaceOweb le lundi, mai 17 2010, 12:16 - PHP - Lien permanent
Lors de l'appel à un script PHP qui convertit des colonnes MySQL, si la conversion est trop longue on obtient l'erreur 2006 de MySQL : MySQL server has gone away
Les logs PHP
query : alter table maTable change myField myDateField datetime DEFAULT NULL PHP Warning: mysql_query(): MySQL server has gone away in C:\columnnames.php on line 157 Warning: mysql_query(): MySQL server has gone away in C:\columnnames.php on line 157 PHP Warning: mysql_query(): Error reading result set's header in C:\columnnames.php on line 157 Warning: mysql_query(): Error reading result set's header in C:\columnnames.php on line 157 temps:-60s 2006: MySQL server has gone away
La doc MySQL
Après avoir fait le tour de la documentation MySQL :
L'erreur 2006 de MySQL : CR_SERVER_LOST : Le client n'a pas obtenu d'erreur en contactant le serveur, mais n'a pas obtenu de réponse complète à la question posée.
//$query = "SET SESSION net_write_timeout = 600"; //mysql_query($query) or die(mysql_errno() . ": " . mysql_error()); //$query = "SET GLOBAL net_write_timeout = 600"; //mysql_query($query) or die(mysql_errno() . ": " . mysql_error());
Les fichiers de configuration php.ini
; Default timeout for socket based streams (seconds) ; http://php.net/default-socket-timeout ;default_socket_timeout = 60 default_socket_timeout = 600 ; Maximum time (in seconds) for connect timeout. -1 means no limit ; http://php.net/mysql.connect-timeout mysql.connect_timeout = 60 ;mysql.connect_timeout = -1 ;mysql.connect_timeout = 600
La solution
Au final c'est le socket par défaut qui bloquait tout le reste. Pour que cela fonctionne, j'ai simplement modifié dans le php.ini :
; Default timeout for socket based streams (seconds) ; http://php.net/default-socket-timeout ;default_socket_timeout = 60 default_socket_timeout = 600