J'ai une requête MySQL SELECT qui prend quelques minutes lorsqu'elle est exécutée dans SQLyog (l'interface graphique que j'utilise). Lorsque j'essaie d'exécuter exactement la même requête via PowerShell (en utilisant SimplySQL), elle échoue toujours au bout de 30 secondes. Je ne sais pas quelle variable de délai d'attente me limite, ni s'il existe même d'autres paramètres dans mon environnement PS qui ont un délai d'attente de 30 secondes. J'ai défini ces valeurs de délai d'attente dans le fichier my.cnf du serveur Linux MySQL et redémarré MySQL. Mais pas de succès :
net_read_timeout=600 mysqlx_read_timeout=600 mysqlx_connect_timeout=600
J'ai recherché sur Google les valeurs MySQL et de délai d'attente, mais je n'ai pas trouvé de réponse. Mes deux questions sont donc les suivantes : quelle autre variable appelée délai d'attente de 30 secondes puis-je remplacer, ou existe-t-il un autre moyen de découvrir la différence entre la façon dont la requête s'exécute dans mon outil interactif et la façon dont elle s'exécute dans une différence de session PS ? (Remarque : je ne peux pas accélérer la requête pour qu'elle se termine toujours en 30 secondes)
Quand je lance mon PS, j'ai juste besoin de :
Open-MySQLConnection -ConnectionString ... Invoke-SqlQuery -Query ... Invoke-SqlQuery -Query "SHOW VARIABLES LIKE '%timeout%'"
(La dernière ligne montre que j'ai réussi à remplacer toute variable MySQL nommée "timeout".)
PowerShell utilise des classes de connexion .Net en arrière-plan pour y parvenir, et ces objets nécessitent unechaîne de connexion. La chaîne de connexion est généralement autorisée à contenir un délai d'attente pour la connexion. Le paramètre exact du délai d'attente dépend du pilote spécifique que vous utilisez et, malheureusement, il n'est pas bien documenté sur Connectionstrings.com, mais voici un exemple :
Sinon, vous pourriez probablement définir une propriété timeout sur l'objet de connexion lui-même... mais nous aurions besoin de regarder le code de connexion PowerShell pour savoir exactement à quoi cela ressemble.
Il est également possible que le code PowerShell le transmette à la source de données ODBC, où la chaîne de connexion ressemble simplement à
DSN=MyDataSource
. Dans ce cas, vous devez examiner la configuration de la source de données.