PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 17/09/2012 08:32:35

unbewusst
Membre

Xubuntu 12.04 et PostgreSQL j'ai DEUX psql

Je viens de réinstaller Xubuntu / Voyager 12.04 sur ma bécanne, suite à "crash" du disk.
J'en suis à rétablir mes bases de données PostgreSQL.
Comme je l'avais fait lors de ma première installation j'ai installé PostgreSQL et les modules complémentaires.
Ensuite j'ai installé Apache2 et php par :

yt@D620 $  sudo apt-get install apache2 php5 php5-cli php-pear php5-xsl php5-curl php5-pgsql

Puis je fait le setup Apache et php, c'est OK.

Enfin je règle en CLI, Postgresql, et fait le setup des fichiers de conf.

ça marche, je peux me connecter à une base de test "yt_tests" par la commande :

yt@D620 $ psql -h <IPV4 or IPV6 du serveur> -U yt -d yt_tests

l'étape suivante est de faire la même chose en php.

là ça ne marche pas du tout, au niveau du butineur j'ai une erreur 500.

je finis par comprendre que dans mon installation de PostgreSQL j'ai deux binaires psql :

le premier :

/usr/bin/psql

symlink pointant vers :

lrwxrwxrwx 1 root root 37 mars   6  2012 /usr/bin/psql -> ../share/postgresql-common/pg_wrapper

le second :

/usr/lib/postgresql/9.1/bin/psql

et que lors de mes premiers essais, j'ai utilisé le premier (/usr/bin/psql).

je comprends alors pourquoi ça ne marche pas en php, enfin je l'intuite : php serait "linké" au second psql qui lui ne marche pas car quand je lance ce psql là j'ai :


yt@D620 $ sudo -s -u postgres
[sudo] password for yt:

avec le premier :

postgres@D620 $ /usr/bin/psql
psql (9.1.5)
Type "help" for help.

postgres=# \q

avec le second :

postgres@D620 $ /usr/lib/postgresql/9.1/bin/psql
psql: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
could not send startup packet: Relais brisé (pipe)
zsh: exit 2     /usr/lib/postgresql/9.1/bin/psql

bien sûr, si je poste c'est parce que je ne sais pas quoi faire, je ne comprends pas l'existence de ces deux psql, je suis abolument sûr ne pas avoir eu ces problèmes lors de la première installation de Xubuntu / Voyager 12.04.

Comme j'enregistre systématiquement toutes mes commandes d'installations dans un répertoire idoine (~/Installations) dans leur ordre chronologique, j'ai fait "la même chose" cette fois-ci.

Comment sortir de ce bazard ? càd comment faire en sorte que php voie le "bon" psql ?

Hors ligne

#2 17/09/2012 11:01:39

rjuju
Administrateur

Re : Xubuntu 12.04 et PostgreSQL j'ai DEUX psql

Bonjour,

ce comportement est normal et lié aux paquests ubuntu. Le wrapper permet entre autre de gérer plusieurs installation de postgresql avec la gestion de "cluster". Si vous éditez /usr/bin/psql, vous verrez qu'il s'agit d'un script perl gerant cela, qui finit par appeler /usr/lib/postgresql/x.x/psql.

C'est étrange que l'utililsation de /usr/lib/postgresql/9.1/bin/psql cause cette erreur.


Pour php, cela ne pose de toutes façons aucun soucis, celui-ci n'utilisant que la libpq pour se connecter (instructions pg_*) et non les exécutables en ligne de commande (sauf utilisation volontaire de ces fichiers).

Hors ligne

#3 17/09/2012 13:47:57

unbewusst
Membre

Re : Xubuntu 12.04 et PostgreSQL j'ai DEUX psql

OK, merci bien.
J'ai bien vu que /usr/bin/psql n'est qu'un symlink vers un wrapper.

je regarderai ce wrapper et son perl.

du coup je ne comprends pas pour quoi ça ne marche pas avec php.

un truc bizarre aussi est que si, depuis php, je mets la variable $host à l'adresse IPV6 d'un autre serveur, ça marche très bien.
autrement, depuis php ça ne marche pas uniquement pour le server en localhost...

par ailleurs ceci résulte d'une seconde installation d'Ubuntu 12.04, à la première je n'ai pas eu ce problème, mais peut-être est-ce que ça provients des updates...

Hors ligne

#4 17/09/2012 16:50:18

dverite
Membre

Re : Xubuntu 12.04 et PostgreSQL j'ai DEUX psql

En principe la première chose à regarder pour des problèmes serveur postgresql sous Ubuntu est le fichier de log le plus récent dans /var/log/postgresql.
Il y a souvent des infos qui permettent d'orienter rapidement vers la raison du problème.

Pour une connexion en local sous Ubuntu, il faut savoir qu'il y a différentes variantes qui ont chacune leurs propres problèmes potentiels:


1- via Unix domain socket, dans ce cas c'est un fichier socket qui sert de point de communication entre client et serveur, par défaut c'est /var/run/postgresql/.s.PGSQL.5432 mais si ça diffère il est de la responsabilité du programmeur de se connecter au bon endroit via le paramètre host de la connexion qui fait partie des nombreuses options indiquables à au pg_connect() du php ou équivalent PDO. Voir la doc de libpq pour toutes les infos utiles à ce sujet.


2- via TCP/IP sur localhost en IPv4  avec SSL. Malheureusement sur Ubuntu le cryptage SSL est activé par défaut (malheureusement car ça consomme du CPU  pour rien). S'il y a un problème de droits sur les certificats par exemple, ça empêche de se connecter.


3- via TCP/IP sur localhost en IPv4 sans SSL. Autant utiliser #1 qui est  théoriquement plus efficace.


4. comme #2 mais en IPv6. Parfois on se connecte en IPv6 sans le savoir parce que /etc/hosts définit localhost en ::1 au lieu de 127.0.0.1 . Et parfois ça ne marche pas parce que l'IPv6 n'est pas complètement supporté.


5. comme #3 mais en IPv6.

Hors ligne

#5 18/09/2012 17:06:26

unbewusst
Membre

Re : Xubuntu 12.04 et PostgreSQL j'ai DEUX psql

Merci bien pour votre réponse.
En fait j'ai trouvé le problème, "un peu par hazard", je ne sais pas pourquoi MAIS, dans le fichier postgresql.conf le port par défaut est 5433 au lieu de celui, usuel, de 5432...
Je ne sais pas du tout ce qui a fait ce changement de port, en tk, c'est pas moi )))

Hors ligne

#6 18/09/2012 18:12:39

rjuju
Administrateur

Re : Xubuntu 12.04 et PostgreSQL j'ai DEUX psql

Le port est défini dynamiquement lors de l'installation par les paquets.

Si vous avez le port 5433, c'est probablement qu'une autre instance postgres tourne sur votre machine sur le port 5432.

Hors ligne

#7 18/09/2012 18:22:31

unbewusst
Membre

Re : Xubuntu 12.04 et PostgreSQL j'ai DEUX psql

Très juste car, après avoir changé le port pour 5432 dans mon fichier de conf, au redémarrage de postgresql, j'ai eu droit à ce message d'erreur :
$ sudo /etc/init.d/postgresql restart
[sudo] password for yt:
* Restarting PostgreSQL 9.1 database server                                                                                                                   * Error: Port conflict: another instance is already running on /var/run/postgresql with port 5432

je suis donc resté à 5433.

Par contre je ne pige pas d'où vient le premier postgresql sur le port 5432...

En fait j'ai réinstallé Xubuntu 12.04, après un crash disk MAIS j'ai utilisé le "même" iso de Xubuntu / Voyager 12.04 LTS.

Et comme j'enregistre dans un répertoire ~/Installations, toutes les installations et configs que je fais, dans l'ordre chronologique, je suppute que l'iso downloadé fin aout n'était pas le même qu'en avril ???

Hors ligne

Pied de page des forums