Vous n'êtes pas identifié(e).
Bonjour,
Je souhaitais utiliser pgsnap afin d'avoir une vision globale et des stats sur ma base de données.
Cependant lorsque j'ai essayé de l'utiliser, j'ai eu les messages suivants:
$ /home/postgres/tools/pgsnap-0.7.0/pgsnap.php -a -o /tmp/pgsnap
Connecting...
Connecting to template1 database...
Adding some HTML files...
Getting Misc informations...
Getting General informations...
Getting Global Informations...
pg_buffercache unavailable!
Getting Database Informations...
pg_buffercache unavailable!
pgstattuple unavailable!
pgstattuple on indexes unavailable!
Getting Current Activities Informations...
Getting Statistical Informations...
Getting Tools Informations...
pgPool unavailable!
Connecting to postgres database...
Adding some HTML files...
Getting Misc informations...
Getting General informations...
Getting Global Informations...
pg_buffercache unavailable!
Getting Database Informations...
pg_buffercache unavailable!
pgstattuple unavailable!
pgstattuple on indexes unavailable!
Getting Current Activities Informations...
Getting Statistical Informations...
Getting Tools Informations...
pgPool unavailable!
Connecting to myDB database...
Adding some HTML files...
Getting Misc informations...
Getting General informations...
Getting Global Informations...
PHP Warning: pg_query(): Query failed: ERROR: function return row and query-specified return row do not match
DETAIL: Returned row contains 8 attributes, but query expects 7. in /home/postgres/tools/pgsnap-0.7.0/lib/databasesincache.php on line 35
An error occured.
$ echo $?
0
Malheureusement en regardant un peu le code de databasesincache.php je n'ai pas bien compris ce qui clochait.
De plus c'est dommage que le script sorte avec un exit status 0 alors qu'il y a une erreur qui semble bien catchée.
J'aurai une autre petite question: est ce qu'on peut utiliser pgsnap sur une machine slave dans le cadre d'une réplication hot-standby replication ?
Merci d'avance pour votre aide
/Erwan
mon environnement - Debian 6:
$ dpkg -l | grep postgres
ii postgresql-9.1 9.1.3-2~bpo60+1 object-relational SQL database, version 9.1 server
ii postgresql-client-9.1 9.1.3-2~bpo60+1 front-end programs for PostgreSQL 9.1
ii postgresql-client-common 129~bpo60+1 manager for multiple PostgreSQL client versions
ii postgresql-common 129~bpo60+1 PostgreSQL database-cluster manager
ii postgresql-contrib-9.1 9.1.3-2~bpo60+1 additional facilities for PostgreSQL
ii postgresql-doc-9.1 9.1.3-2~bpo60+1 documentation for the PostgreSQL database management system
$ dpkg -l | grep php
ii php5-cli 5.3.3-7+squeeze8 command-line interpreter for the php5 scripting language
ii php5-common 5.3.3-7+squeeze8 Common files for packages built from the php5 source
ii php5-pgsql 5.3.3-7+squeeze8 PostgreSQL module for php5
ii php5-suhosin 0.9.32.1-1 advanced protection module for php5
pgsnap v0.7
Hors ligne
La requête est un peu étonnante au niveau de la jointure avec pg_tablespace. Si vous supprimez la jointure sur pg_tablespace, le problème est-il corrigé ?
Guillaume.
Hors ligne
bonjour et merci pour ce retour !
donc effectivement la requête qui pose problème est bien la suivante:
$query = "SELECT
pg_get_userbyid(datdba) AS dba,
datname,
pg_database_size(reldatabase) AS size,
count(*) AS buffers
FROM pg_buffercache, pg_database, pg_tablespace
WHERE reldatabase=pg_database.oid
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3";
mais en retirant la composante avec pg_tablespace j'ai malheureusement le même souci
Hors ligne
Je commence à me demander si le problème ne vient pas de pg_buffercache. Pouvez-vous faire un simple "SELECT count(*) FROM pg_buffercache" ? pg_buffercache étant une vue qui fait appel à une procédure stockée, cela expliquerait ce message étonnant.
Guillaume.
Hors ligne
vous avez raison:
# SELECT count(*) FROM pg_buffercache;
ERROR: function return row and query-specified return row do not match
DÉTAIL : Returned row contains 8 attributes, but query expects 7.
Hors ligne
Ça ressemble à une ancienne vue pg_buffercache qui appellerait la nouvelle version de la fonction. Ça ne serait pas une base migrée d'une ancienne version ?
Marc.
Hors ligne
après vérification il semble que ce soit le cas... la base a été créée sous une 8.3.
du coup cette vue n'a plus de sens.
Hors ligne
Désinstaller pg_buffercache, puis réinstaller-le, ça devrait corriger le problème.
Ça me fait penser qu'il faut que je mette à jour ce programme, vu que la beta 1 de PostgreSQL 9.2 va bientôt sortir.
Guillaume.
Hors ligne
effectivement après une réinstallation de l'extension pg_buffercache tout va mieux. elles avaient bien été installées avant la migration vers la 9.1 d'où le souci.
merci pour vos retours en tout cas
Hors ligne