Skip site navigation (1) Skip section navigation (2)

bug dans postgresql 8.4 ou PDO (php-pdo) ?

From: ccastello <ccastello(at)athmo(dot)eu>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: bug dans postgresql 8.4 ou PDO (php-pdo) ?
Date: 2012-04-20 09:16:48
Message-ID: 1334913408.8204.22.camel@posteClaudeDev (view raw or flat)
Thread:
Lists: pgsql-fr-generale
Bonjour à tous.

J'ai rencontré l'erreur "SQLSTATE[08006] [7] FATAL:  limite de
connexions dépassée pour les utilisateurs standards" dans les conditions
particulières décrites ci-dessous avec PDO (php data objects).

Je cherche à identifier si le souci se situe côté POSTGRESQL ou côté PDO

En vous remerciant pour votre aide.


Le contexte : 
+ serveur:
    * PostgreSQL 8.4.11 on x86_64-pc-linux-gnu
    * PHP 5.3.2 avec pdo_pgsql v8.4.9 module 1.0.2 revision pdo_pgsql.c
293036 2010-01-03 09:23:27Z sebastian
+ le cas se résume à celui-ci :
  + créer quelques bases "testN", N supérieur à "max_connections"
  + se connecter aux différentes bases, les unes après les autres mais
avec une erreur

Le problème : suite à l'erreur provoquée par l'absence de la table
désirée, aucune "déallocation" n'est effectuée. Du coup on atteint très
rapidement le nombre maximal de connexions autorisée.

Le script PHP permettant de reproduire le problème avec un nombre
maximum de connexions à 20, la table "toto" n'existant pas :
<?php
for ($i = 1; $i < 20; $i++) {
	echo "$i : ";
	try {
		$user = 'usertest';
		$password = 'usertest';
		$dsn = "pgsql:dbname=test$i;host=localhost";
		$c = new PDO ($dsn, $user, $password);
		$c->query ('select * from toto;');
	} catch (Exception $e) {
		echo "Error! " . $e->getMessage () . PHP_EOL;
	}

	$c = NULL;
	echo PHP_EOL;
}

Un extrait du journal de postgresql qui montre l'absence de désallocation :

2012-04-16 15:35:08.368 CEST			4954		4f8c200c.135a	1		2012-04-16
15:35:08 CEST		0	LOG	0	connexion re?ue : h?te=::1 port=33412
2012-04-16 15:35:08.383 CEST	usertest	test1	4954	::1:33412	4f8c200c.135a
2	authentication	2012-04-16 15:35:08 CEST		0	LOG	0	connexion autoris?e :
utilisateur=usertest, base de donn?es=test1
2012-04-16 15:35:08.385 CEST	usertest	test1	4954	::1:33412	4f8c200c.135a
3	PARSE	2012-04-16 15:35:08 CEST	2/8113	0	ERREUR	42P01	la relation «
toto » n'existe pas
2012-04-16 15:35:08.386 CEST			4955		4f8c200c.135b	1		2012-04-16
15:35:08 CEST		0	LOG	0	connexion re?ue : h?te=::1 port=33413
2012-04-16 15:35:08.400 CEST	usertest	test2	4955	::1:33413	4f8c200c.135b
2	authentication	2012-04-16 15:35:08 CEST		0	LOG	0	connexion autoris?e :
utilisateur=usertest, base de donn?es=test2
2012-04-16 15:35:08.402 CEST	usertest	test2	4955	::1:33413	4f8c200c.135b
3	PARSE	2012-04-16 15:35:08 CEST	3/219	0	ERREUR	42P01	la relation « toto
» n'existe pas

-- 
ccastello <ccastello(at)athmo(dot)eu>
Athmo - R.E.M.

pgsql-fr-generale by date

Next:From: Pierre BOIZOTDate: 2012-04-23 09:14:39
Subject: Create Role : expiration et contrainte sur le pwd
Previous:From: ccastelloDate: 2012-04-20 09:10:18
Subject: Re: problème d'inscription ?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group