Bonjour
J’ai écrit une procédure pour transférer des données d’une table vers une autre.
1245 boucles doivent être exécutées.
Après l’appel de la procédure, soit 25 à 30 secondes, il y a un message d’erreur qui apparait :
Error Code: 2013 Lost connection to MySQL server during query 30.805 sec
J’ai ré-exécuté la même procédure mais en limitant les boucles à 20 boucles et tout a bien fonctionné, à 50 boucles le message d’erreur s’est affiché.

Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
BEGIN
DECLARE IDNBR,CONTEUR INT(4);
DECLARE v_CityName, V_CityNameValue VARCHAR(45);
 
SET IDNBR = (SELECT COUNT(ID_test) FROM gdelaven.test);
SET CONTEUR = 1;
 
WHILE CONTEUR <=IDNBR DO
 
IF EXISTS (SELECT test.ID_Test FROM test WHERE test.ID_Test = CONTEUR) then
 
SET V_CityName =(SELECT test.CityName FROM gdelaven.test WHERE ID_Test = CONTEUR );
 
SET V_CityNameValue = (SELECT test.CityNameValue FROM gdelaven.test WHERE ID_Test = CONTEUR );
 
   UPDATE `gdelaven`.`tbl_provquebeccodepostal2`
    SET
        `FRCityName` = V_CityName,
        `CityNameValue` = V_CityNameValue
        WHERE `CityName` = V_CityName ;
 
END IF;
 
 SET CONTEUR = CONTEUR + 1;
END WHILE;
 
SELECT CONTEUR,V_CityName, V_CityNameValue;
 
END
Vos commentaires et suggestions seront appréciés.