Salut,
Après avoir passé ma machine en postgresql 7.4, j'ai un script python
jenna du paquet dak qui ne trouve plus le socket postgresql.
Le code python de jenna est simple :
projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]));
Et l'erreur :
,----
| pg.InternalError: could not connect to server: No such file or directory
| Is the server running locally and accepting
| connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
`----
et mon socket se trouve en fait dans /var/run/postgresql :
,----
| $ ls -la /var/run/postgresql/
| total 12
| srwxrwxrwx 1 postgres postgres 0 jun 8 11:11 .s.PGSQL.5432
| -rw------- 1 postgres postgres 34 jun 8 11:11 .s.PGSQL.5432.lock
`----
J'ai regardé le code du module python2.3-pygresql :
,----
| /* get connection socket */
| static char pg_fileno__doc__[] =
| "fileno() -- return database connection socket file handle.";
|
| static PyObject *
| pg_fileno(pgobject * self, PyObject * args)
| {
| if (!self->cnx)
| {
| PyErr_SetString(PyExc_TypeError, "Connection is not valid");
| return NULL;
| }
|
| /* checks args */
| if (!PyArg_ParseTuple(args, ""))
| {
| PyErr_SetString(PyExc_SyntaxError,
| "method fileno() takes no parameters.");
| return NULL;
| }
|
| #ifdef NO_PQSOCKET
| return PyInt_FromLong((long) self->cnx->sock);
| #else
| return PyInt_FromLong((long) PQsocket(self->cnx));
| #endif
| }
`----
et c'est donc PQsocket() qui retourne le chemin de la socket.
Maintenant pourquoi le chemin du socket n'est pas bon ? Le chemin du
socket est défini en dur dans la configuration de postgresql
(/etc/postgresql/7.4/main/postgresql.conf) mais pas dans celle de
dak. Si quelqu'un a une idée ?
Christian