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 12/04/2016 16:37:34

TITI29
Membre

Erreur sur fonction selectrow_array

Bonjour,

j'ai installé PERL 5.14 sur une debian 6.0. Ainsi que les module BDI, DBD::Pg. Pour tester si tout fonctionne, j'ai ecrit un petit programme tout bête :

my $dbh = DBI->connect('dbi:Pg:dbname=gs_test;host=monServeur,'user',pass,{AutoCommit=>1,RaiseError=>1,PrintError=>0});
print "2+2=",$dbh->selectrow_array("SELECT 2+2"),"\n";

voici le résultat au lancement :

DBD::Pg::db selectrow_array failed: la fonction nécessite au minimum le protocole 3.0

Quelqu'un aurait il une piste pour résoudre mon problème. Merci D'avance.

Pierre

Hors ligne

#2 12/04/2016 17:21:36

ruizsebastien
Membre

Re : Erreur sur fonction selectrow_array

Bonjour,

Quelle version de postgresql utilisez vous ?


Cordialement,

Sébastien.

Hors ligne

#3 12/04/2016 17:37:27

TITI29
Membre

Re : Erreur sur fonction selectrow_array

Bonjour,

version postgresql 7.2.8

Hors ligne

#4 12/04/2016 17:48:12

ruizsebastien
Membre

Re : Erreur sur fonction selectrow_array

il faut essayer avec une version beaucoup plus récente.


Cordialement,

Sébastien.

Hors ligne

#5 12/04/2016 18:00:00

arthurr
Membre

Re : Erreur sur fonction selectrow_array

la 7.2 date de 2002 ... Vous n'avez pas la possibilité d'upgrader votre serveur ?

Dernière modification par arthurr (12/04/2016 18:00:17)

Hors ligne

#6 12/04/2016 18:12:22

ruizsebastien
Membre

Re : Erreur sur fonction selectrow_array

c'est sans doute celle qui est intégrée dans la debian 6...sont très conservateurs chez debian ;-)


Cordialement,

Sébastien.

Hors ligne

#7 12/04/2016 18:18:03

TITI29
Membre

Re : Erreur sur fonction selectrow_array

Non, je suis obligé de garder cette version de postgresql, je suis entrain de préparer un serveur de secours.  il faut installer une version plus ancienne de  perl ?

Pierre

Hors ligne

#8 12/04/2016 18:19:00

ruizsebastien
Membre

Re : Erreur sur fonction selectrow_array

oui du coup.


Cordialement,

Sébastien.

Hors ligne

#9 12/04/2016 18:22:59

TITI29
Membre

Re : Erreur sur fonction selectrow_array

Comment je désinstalle la version actuelle ? j'ai déjà essayé mais ça n'a pas l'air de fonctionner.

Hors ligne

#10 13/04/2016 09:11:53

arthurr
Membre

Re : Erreur sur fonction selectrow_array

Franchement vous partez dans une grosse galère ...
Perl est beaucoup utilisé par Debian (surtout une 6) et downgrader Perl me semble bien plus risqué que de dump/restore votre base sur un serveur PostgreSQL plus récent

Hors ligne

#11 13/04/2016 09:36:18

TITI29
Membre

Re : Erreur sur fonction selectrow_array

Bonjour,

je crois la grosse galère c'est de migrer ma BDD de 7.6 à une 8.2 ou voir une 9. Dans ma bdd 7.2 j'ai environ 500 fonctions , 600 vues , des commandes ont changé de la version 7 à la 8 je ne me vois pas traduire toutes ces fonctions, quitte à prendre une galère autant prendre la moins risquée ? non ?

Hors ligne

#12 13/04/2016 09:49:33

ruizsebastien
Membre

Re : Erreur sur fonction selectrow_array

pourquoi ne pas partir sur une debian plus ancienne avec du coup en natif un perl plus ancien.
Ensuite vous récupérez votre instance postgresql 7.2.


Cordialement,

Sébastien.

Hors ligne

#13 13/04/2016 09:58:08

TITI29
Membre

Re : Erreur sur fonction selectrow_array

Parce que j'ai mon serveur de production qui fonctionne actuellement avec cette version de debian, perl 5.10 et cette version de postgresql 7.2. j'essaie de mettre en place un serveur de secours avec les mêmes caractéristiques. La désinstallation de perl 5.14 sur la debian 6.0 peut poser problème ?

Hors ligne

#14 13/04/2016 10:06:37

ruizsebastien
Membre

Re : Erreur sur fonction selectrow_array

Je ne sais pas...
Par contre si votre serveur de production contient perl 5.10, c'est soit en natif sur debian 6, soit parce que quelqu'un à déjà fait ce downgrade ?


Cordialement,

Sébastien.

Hors ligne

#15 13/04/2016 10:22:44

TITI29
Membre

Re : Erreur sur fonction selectrow_array

Oui, c'est l'équipe informatique précédente. Donc j'aimerai faire la même chose mais pour l'instant je n'y arrive pas. On m'a livré une VM debian 6.0 avec un perl 5.14, je me suis chargé d'installé la version de postgresql 7.2 ça a été un peu galère mais la base est opérationnelle, mais les taches planifiées qui elles tournent en perl ne fonctionnent pas. Vous avez une idée de la façon de procéder pour installer une version perl 5.10 sur une debian 6 ?

Hors ligne

#16 13/04/2016 10:43:20

ruizsebastien
Membre

Re : Erreur sur fonction selectrow_array

Non, et je ne suis pas sûr que ce soit le bon forum pour ça...
Désolé.


Cordialement,

Sébastien.

Hors ligne

#17 14/04/2016 17:26:15

dverite
Membre

Re : Erreur sur fonction selectrow_array

Pour la partie historique, la debian 6 (etch) était associée à postgresql 8.1
C'est la debian 3 (woody) qui avait postgresql 7.2

En fait, on vous demande de faire tourner sur une debian obsolète un postgresql encore plus obsolète.

En revanche Perl 5.14 c'est vraiment récent par rapport au reste.
Mais concernant ça, ce n'est pas forcément Perl lui-même qu'il faut regarder, c'est DBD-Pg,
voir notamment ça:
http://search.cpan.org/dist/DBD-Pg/Pg.pm#prepare

Les prepared statements via le protocole n'existaient pas avant le protocole 3.

Donc quand on est en protocole 2 (avec postgresql 7.2) logiquement il faudrait les inhiber.
C'est faisable avec

  $dbh = DBI->connect($DBNAME, $DBUSER, $DBPASS,
                      { AutoCommit => 0,
                        RaiseError => 1,
                        pg_server_prepare => 0,
                      });

Je ne sais pas si c'est suffisant (j'en doute) mais je pense que c'est nécessaire. dans votre configuration.

Sinon, compiler un DBD::Pg qui date de 2007 (=2002+5 ans) mais pas après, en espérant qu'un vieux DBD-Pg soit compilable avec un nouveau Perl, ce qui n'est pas non plus garanti.

Hors ligne

#18 15/04/2016 18:15:33

TITI29
Membre

Re : Erreur sur fonction selectrow_array

Merci c'est une bonne piste j'ai remplacé les fonctions prepare et fetch_row  par db->do(xxx) ça à l'air de passer, je vais continuer à tester.

Merci

Hors ligne

Pied de page des forums