Bonjour,
J'ai un problème de connexion à une base de donnée MySQL via un site que je suis en train de développer. Ce pb est bloquant pour moi et dure depuis plus d'un mois ... je n'arrive pas à trouver ma réponse.
Lorsqu'il y a un utilisateur sur le site, je n'ai pas de problèmes.
Mais si une autre page est ouverte par quelqu'un d'autre, cette page ne sera pas affichée et le message d'erreur suivant apparait :
Code :
- ERROR [HY000] [MySQL][ODBC 3.51 Driver][mysqld-4.0.27-max-log]Lost connection to MySQL server during query
|
Pour que la 2eme personne puisse utiliser le site, il faut que la premiere ferme le navigateur.
J'ai crée une classe de gestion de base de données contenant un attribut :
public OdbcConnection dbConnection = null;
Qui est initialisé de la maniere suivante :
Code :
- public void CreateConnection()
- {
- if (this.dbConnection == null)
- {
- this.dbConnection = new System.Data.Odbc.OdbcConnection(CO_Configuration.connectionString);
- this.dbConnection.Open();
- }
- }
|
Mes pages instancient toutes l'objet de la maniere suivante :
Code :
- this.dbManager = new CO_BDD();
- this.dbManager.CreateConnection();
|
Et à la fin de la page il y a :
Code :
- void index_LoadComplete(object sender, EventArgs e)
- {
- this.dbManager.CloseConnection();
- }
|
J'avoue ne pas du tout comprendre ce qui se passe et je ne trouve pas vraiment d'aide sur le net.
J'ai l'impression qu'il n'y a toujours qu'un et un seul process qui tourne sur le serveur de base de donnée et je me demande si c'est normal ...
D'ailleurs, si je lance une requete, un process est lancé mais il n'est pas killé au close() : il attend le timeout (20 secondes). Normal ?
Quelqu'un a t'il une petite idée ?
Un conseil ?
Sinon, j'ai cru voir qu'il fallait utiliser des pools de connexion mais j'avoue ne pas savoir comment ca fonctionne et je trouve pas vraiment d'aide sur le net.
Vous n'auriez pas un lien par hasard ?
Merci,
Worldofdada