2008-11-12 6 views
2

J'ai une application client qui se connecte au serveur de la base de données MySQL 4 en utilisant des bibliothèques de stock sur SuSE SLES 9. Cependant, lors du traitement d'un ensemble de réinitialisation particulier du serveur, iterating throw ne permet pas moi de traiter tous les résultats qui sont dans la base de données.C Comportement de la bibliothèque cliente MySQL

Ce problème survient parfois, surtout lorsque les serveurs ont plusieurs jours de disponibilité. Je suppose qu'un redémarrage résout le problème. Y at-il de toute façon que le fait de ne pas libérer le résultat MySQL dans le temps donne lieu à cette fuite de mémoire et se manifeste dans ce comportement étrange tous les jeux de résultats doivent-ils toujours être libérés? Cependant, la même table et le même programme se comportent comme sur un autre ordinateur.

La corruption de l'ensemble de résultats peut-elle se produire en raison de problèmes d'implémentation dans l'application ou dans la bibliothèque client mysql?

Répondre

0

Vous pouvez penser à mettre à niveau vers MySQL 5.
Il est généralement bon d'avoir la dernière version.

+0

La mise à niveau vers MySQL n'est pas une option car j'aurais aimé le faire personnellement. – jcodeninja

1

Tout est possible, mais je serais enclin à aller avec des problèmes au niveau de l'application par défaut. Tout problème qui pourrait être lié à la mémoire est un candidat de choix pour un bug de corruption de tas si vous codez en C/C++, et cela pourrait causer des problèmes d'ensemble de résultats. En outre, je suis curieux de savoir depuis combien de temps vous maintenez cet ensemble de résultats ouvert - est-il possible que les lignes que vous "manquiez" aient été insérées entre le moment où la requête a été exécutée et quand vous récupérez le valeur de l'ensemble de résultats? Enfin, la libération d'un ensemble de résultats sur le serveur se fait automatiquement lorsque vous fermez la connexion à la base de données. Donc, à moins de maintenir une seule connexion ouverte pendant plusieurs jours, il n'y a probablement pas de problème.

Questions connexes