Vous n'êtes pas identifié(e).
Bonjour,
Notez que je suis disposé à vous aider, mais disons que votre question sur le PGDATA m'a fait pensé que vous n'aviez pas lu la documentation. Plutôt que de longue phrases ici, autant profiter de la documentation que nous avons mis du temps à écrire
Pour le reste, si les pg_hba.conf présentés ici sont complets, il y a plusieurs erreurs. Pour commencer, les messages suivants de PostgreSQL indiquent qu'une connexion via un socket unix local est refusée car aucune ligne ne correspond dans le pg_hba:
FATAL: no pg_hba.conf entry for host "[local]", user "postgres", database "postgres", SSL off
J'imagine que ces connexions viennent de PAF...
Rajoutez donc en début de fichier la ligne suivante:
local all postgres peer
Reste que ça ne laisse pas beaucoup de place pour les connexions distantes d'une applications...
Ensuite, il semble que sur "pouj-pgsql-4", vous rejetiez les connexions de réplication non pas de "pouj-pgsql-4", mais de "pouj-pgsql-3"...
que doit-on mettre dans "pgdata" ?
est-ce le répertoire où on trouve le postgresql.conf, les repertoires pg_xxlog, pg_clog, pg_tblspc, etc... ?
Je me permets de vous rediriger vers le chapitre concerné dans la documentation... : http://dalibo.github.io/PAF/configurati … parameters
Et plus globalement, pensez à revoir cette page en entier à propos des autres pré-requis ou configuration à respecter.
Encore une fois, si l'ensemble de la documentation n'est pas suffisante (les pages d'installation, configuration, fencing, les admin cookbook, les quick start), n'hésitez pas à l'étoffer ou à proposer des améliorations.
++
Bonjour,
Ce paramètre est mauvais: "clone-node-max=2 ". Vous ne pouvez pas avoir deux instances fait parti du même groupe de réplication sur le même nœud...
Pour le reste, isolez les lignes qui commencent par "pgsqlms" dans vos logs, ce sont tous les messages de l'agent PAF lui même. Vous y trouverez peut-être d'autres réponses.
Bonjour,
Oui, d'autres l'ont fait, mais il faut utiliser l'agent de fencing "fence_vmware" dans ce cas et non "fence_virsh".
Tiens, j'oubliais, vous avez aussi ce format de disponible:
psql "dbname=$database_name options=--search_path=pg_catalog" <<'EOQ'
...
EOQ
Bonjour,
Vous pouvez aussi initialiser le search_path directement à la connexion. Eg.:
$ psql <<'EOQ'
SELECT current_setting($$search_path$$);
EOQ
current_setting
-----------------
"$user",public
(1 row)
$ PGOPTIONS="--search_path=pg_catalog" psql <<'EOQ'
SELECT current_setting($$search_path$$);
EOQ
current_setting
-----------------
pg_catalog
(1 row)
WARNING: no stonith devices and stonith-enabled is not false
Ne pas avoir de fencing disponible et conserver stonith-enabled activé vous empêchera de démarrer quoi que ce soit dans votre cluster. Si vous voulez mettre temporairement le fencing de coté **le temps de réussir à démarrer vos instance PostgreSQL à travers Pacemaker**, il faut désactiver "stonith-enabled". Mais gardez bien à l'esprit que sans fencing, votre cluster (que ce soit avec PAF ou autre chose) finira par manger vos données.
Dans vos fichiers "pg_hba.conf", les lignes suivantes ne servent à rien:
host replication postgres 192.168.12.34/24 reject
# ou
host replication postgres 192.168.12.35/24 reject
1- il me semble que l'hyperviseur ne se connectera jamais à PostgreSQL (en tout cas je n'en vois pas l'intérêt)
2- lorsque vous spécifiez l'adresse d'une machine, le masque doit être "/32". Dans le cas présent, vos deux règles rejettent toute la plage 192.168.12.0.
3- pensez à conserver ces reject **AVANT** toute autre règle d'authentification
En revanche, j'imagine que ces mauvaises règles sont issues d'une confusion avec les règles de reject pour la réplication de chaque machine vers elle même, donc de leur IP locale (et non celle de l'hyperviseur donc)... Par exemple, dans le cas de la machine pouj-pgsql-4, les règles doivent être:
host replication postgres 192.168.12.15/32 reject
host replication postgres 192.168.12.14/32 reject
Juste pour être sûr : le user indiqué dans la commande de création du fencing "login=", dans mon cas il s'agit du user root du serveur local (POUJ-PGSQL-3 et POUJ-PGSQL-4).
Est-ce correct ?
Non. Nous parlons ici de fencing. L'intérêt du fencing est de forcer l'arrêt (ou le reboot) de la machine sans lui demander son avis. une connexion locale à la VM en tant que root ne servira donc à rien. Ici, il faut se connecter à l'hyperviseur (192.168.12.34 ou 192.168.12.35 chez vous) pour y éteindre la VM désignée. Le compte "login=" à utiliser est donc un utilisateur système sur l'hyperviseur ayant les droits d'administration sur les VM (les commandes que je vous ai fourni la dernière fois).
Il faut mettre les adresses IP locales (eth0) ou celles vu par l'hyperviseur ?
Il faut mettre l'adresse IP de l'hyperviseur...et indiquer pour le paramètre "port=" le nom de la VM hébergée sur l'hyperviseur et qu'il doit donc éteindre.
Pour le test de résolution, il manquait "pouj-pgsql-3" et "pouj-pgsql-4" dans les /etc/hosts des 2 serveurs... Maintenant ça ping correctement.
Est-ce suffisant ?
Pas forcément, PostgreSQL fait une résolution de nom ET une résolution de nom inverse (IP -> nom) pour s'assurer que la connexion entrante correspond à la règle pg_hba (voir doc postgres). Néanmoins, j'imagine que ça devrait fonctionner désormais.
Mais sinon, comme je l'écrivais, positionnez les adresses IP des machines plutôt que leur nom dans le pg_hba.conf pour les reject. Dans le cadre de votre maquette ce sera déjà un bon point de départ pour valider l'ensemble.
Les commandes virsh que je vous ai fourni sont à exécuter sur l'hyperviseur comme indiqué dans mon message précédent, pas depuis les VM (comme le montre votre prompt).
Bonjour,
Concernant le fencing, de ce que je vois, vous autorisez l'utilisateur "postgres" à se connecter en SSH à vos hyperviseurs 192.168.12.34 et 192.168.12.35 pour y arrêter/démarrer vos instances qui y sont nommées POUJ-PGSQL-3 et POUJ-PGSQL-4, c'est bien ça ?
Faites le test manuellement, l'utilisateur "postgres" a-t-il le droit de se connecter en SSH sur ces hyperviseur avec le mot de passe indiqué ? Si oui, que retourne la commande "virsh list --all" ? Les commandes suivantes fonctionnent-elles ?
# démarrer la VM
virsh start POUJ-PGSQL-3
# interrompre la VM (ps: ne la "détruit" pas)
virsh destroy POUJ-PGSQL-3
Concernant votre configuration, j'ai trouvé une erreur bénigne dans les lignes suivantes:
pcs -f cluster1.xml resource master pgsql-ha pgsqld \
master-max=1 master-node-max=1 \
clone-max=3 clone-node-max=1 notify=true
La paramètre "clone-max" doit être positionné à 2.
Assurez-vous que les noms de machine "pouj-pgsql-3" et "pouj-pgsql-4" que vous avez positionné dans le pg_hba.conf (sans le fqdn complet) sont bien résolus ainsi que leur reverse DNS. Sinon, positionnez les adresses IP des machines plutôt que leur nom dans le pg_hba.conf poru les reject.
Enfin, il semble que les erreurs aient eu lieues lors d'actions "stop" sur les deux instances. Pourriez-vous fournir les log de ce qui a pu se passer entre le démarrage du cluster et ce moment là ?
Bonjour,
Désolé pour l'attente, j'étais indisponible ces deux derniers jours.
- le recovery.conf.pcmk doit-il être sur tous les serveurs (c'est ce que j'ai fait) ?
(Dans ma logique : je dirais non, le fichier ne doit être que sur le slave)
Oui, ce template doit se trouver sur chaque nœud, c'est ce qui est d'ailleurs effectué dans le quick start de la documentation: http://dalibo.github.io/PAF/Quick_Start … esql-setup
Néanmoins, je vais prendre en compte cette question et l'indiquer plus clairement dans la documentation.
Ce fichier n'est qu'un template qui sera copié en tant que "recovery.conf" que si l'instance locale doit démarrer comme un standby. Dans un cluster, avec le jeu des bascules, des failover, etc, n'importe quel nœud doit pouvoir être un standby. Et surtout, le plus important, Pacemaker impose que toute ressource démarre comme un "slave" lors du "start", puis sera ensuite éventuellement promue en "master" avec un "promote". Ce qui explique la présence de ce fichier de template partout.
- l'ip virtuelle est placée sur le serveur qui est sensé être slave (Le pouj-pgsql-4.xxx.lan).
En théorie, cette IP ne sera placé que sur le nœud hébergeant l'instance master. Une fois que vous aurez réglé le problème associé à la configuration de vos instances PostgreSQL, nous pourrons vérifier le comportement de l'adresse IP.
Concernant la localisation du master, PAF la définie au premier démarrage du cluster en cherchant quelle est la seule instance éteinte alors qu'elle était en production (== pas un standby). Pour tous les futurs démarrages du cluster, les scores associés depuis aux instances sont ensuite utilisés (1001 pour le master donc).
Enfin, concernant vos log:
* je suis étonné qu'ils commencent tous par "ERROR: ... the instance has probably crashed", au démarrage du cluster, les instances doivent être au propre
* de même, je suis étonné que 1 minute après ce démarrage tumultueux de chaque instance, elles soient découvertes comme de nouveaux brutalement interrompues (d'autant plus si le fencing ne fonctionne pas).
* comment se fait-il qu'à 13:06:57, les DEUX instances entrent en streaming replication ("started streaming WAL from primary at 3F/39000000 on timeline 1") avec un master alors qu'elles sont toutes deux en standby ?
=> vérifiez bien les règles "reject" dans vos fichiers "pg_hba.conf"
=> supprimez l'adresse IP 192.168.12.15 AVANT le démarrage du cluster
=> arrêtez votre cluster, démarrez les instances PostgreSQL avec un master et un standby, assurez-vous que la réplication fonctionne bien, arrêtez toutes vos instances proprement, puis démarrez Pacemaker partout.
Concernant le fencing, il semble que votre configuration soit mauvaise:
* "ipaddr" doit contenir l'IP d' l'hyperviseur hébergeant la VM concernée
* concernant le login="root", vous devez indiquer ici l'utilisateur de connexion SSH vers l'hyperviseur. N'importe quel utilisateur système ayant le droit d'allumer/éteindre une VM à travers l'outil virsh fera l'affaire. La documentation de PAF donne un exemple avec root, mais dans mes maquette, j'utilise un autre utilisateur. Voir: http://dalibo.github.io/PAF/fencing.htm … -and-virsh
* vérifiez bien que "port" contient le nom de la VM tel que configuré coté hyperviseur (peut-être différent du hostname)
Je pense que la plupart des réponses à vos questions se trouvent dans la documentation de PAF. Je suis preneur si certaines choses ne vous y semble pas clair ou manquante. Merci !
Pour le quorum, dans les docs de pacemaker il est déconseillé de l'activer dans le cas d'une architecture avec seulement 2 serveurs
Ce n'est plus le cas avec les versions modernes de Corosync. Considérez la note à propos du quorum sur la page de documentation suivante: http://clusterlabs.org/doc/en-US/Pacema … lover.html
Cette note explique que la gestion du quorum est désormais possible dans un cluster à deux nœuds grâce à l'option "two_node" dans la configuration de Corosync. Ce paramètre active implicitement "wait_for_all".
Activer le quorum dans un cluster à deux nœuds est utile dans le scénario suivant par exemple:
* démarrage des deux nœuds du cluster, le CRM démarre les instances PostgreSQL, fait une promotion, etc
* après quelques temps, l'un des deux nœuds crash et se fait fencer
* grâce au paramètre "two_node" le nœud encore en vie conserve le quorum et PostgreSQL peut continuer à vivre dessus
* au redémarrage du second nœud, si ce dernier n'arrive pas à se joindre au reste du cluster (problème réseau ou autre), le paramètre "wait_for_all" l'empêche d'acquérir le quorum et il ne pourra démarrer aucune ressource.
Bonjour,
Première chose importante, une fois que vous aurez fait fonctionner l'ensemble, avant de faire vos tests de bascules, activez le fencing et le quorum :
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
...
<nvpair id="cib-bootstrap-options-stonith-enabled" name="stonith-enabled" value="false"/>
<nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
</cluster_property_set>
</crm_config>
Ensuite, à propos du problème lui même, vu la situation, je dirais qu'il y a une erreur ou un oubli dans la configuration des instances PostgreSQL et qui est détecté par PAF dans la fonction "pgsql_validate_all" (dans le fichier "/usr/lib/ocf/resource.d/heartbeat/pgsqlms").
J'imagine que les log de Pacemaker doivent en faire état explicitement. Cherchez dans le fichier "/var/log/cluster/corosync.log" toutes les lignes débutant par "pgsqlms" autour de l'heure de ces erreurs 'Fri Jan 27 13:04:58 2017' (commande à adapter à votre environnement):
grep "^pgsqlms" /var/log/cluster/corosync.log
Le plus souvent, les erreurs concernent le template du recovery.conf, avec un mauvais "application_name" par exemple.
Rien à voir, mais validez bien aussi le contenu de votre pg_hba.conf afin de vous assurer que les règles "reject" y sont bien présentes et au bon endroit.
Bonjour,
Comme l'écrivait Marc, la bascule auto est complexe à mettre en œuvre, d'autant plus pour un SGBD si on ne veut pas se retrouver dans une situation de split brain.
Le fait est que Pacemaker est une référence incontournable et qu'aucun autre projet sous Linux ne lui arrive à la cheville en terme de fonctionnalité. C'est exactement pour cette raison que PAF a été conçu comme une simple brique (ressource agent) de ce projet essentiel.
Pour rappel, jusqu'à présent, le fencing est la SEULE solution propre pour éviter les split brain, d'autant plus sur un cluster à deux nœud. Je ne vois aucune méthode de fencing dans repmgr ou dans pgpool. Ces deux projets laissent ce "détail" à la discrétion des administrateurs s'ils y pensent à travers des scripts maison à exécuter...
À propos d'avoir une IP secondaire qui se promène là où le maître se situe, là aussi repmgr laisse les administrateurs se débrouiller...C'est faisable, mais ça nécessite un peu d'huile de coude et au moins 2 scripts distincts (pour la bascule à chaud et en cas de redémarrage du serveur)
Coté pgpool, c'est pas beaucoup mieux. Ils ont **encore** ré-écrit la roue en intégrant un watchdog dans leur code. Ce dernier n'est évidement pas parfait et complet et a déjà un sacré historique en terme de bug. Un client m'a rapporté avoir abandonné le watchdog de pgpool car ce dernier provoquait des incidents sur le réseau local à cause de son activité ARP. Un autre à mis pgpool en haute disponibilité grâce à ... Pacemaker pour éviter qu'il soit un SPoF (ce dernier l'utilisait comme répartiteur de charge).
Donc oui, Pacemaker est complexe à comprendre et mettre en œuvre pour le nouveau venu, mais il y a quelques raison derrière ça. Et l'intérêt ensuite, c'est qu'il fait tout, vraiment TOUT, et le fait bien: gestion des ressources, failover, switchover, dépendances des ressources entre elles, fencing, watchdog, quorum, règles, etc. PAF n'est qu'une simple brique au dessus qui exploite au mieux ce que nous offre ce beau projet.
++
Disons que face à votre non contribution, je me posais bien des questions. Maintenant, je comprends que vous ne suivez simplement pas la liste de discussion, et donc la discussion à propos de votre bug.
je n'ai tout simplement pas eu le temps... Je ne consacre pas tout mon temps à PG... Je travaille aussi !
Quand à ma "non contribution" je considère qu'il s'agit de votre part d'une insukte. En effet une contribution pour éradiquer un bug qu'il ne vous plait pas de voir exposer est une insulte intellectuelles, à peu près équivalentes à celles des totalitarismes, qui ne supportent pas de voir exposer des défaillances dans leurs systèmes et préfèrent couper la tête à ceux qui les exposent !
Hahaha, génial ! Veuillez m'excuser, cher Monsieur, pour ma formulation qui pouvait prêter, je l'admet, à confusion. Ce que je pensais en écrivant cette phrase était :
Disons que face à votre non contribution à la suite de cette discussion, ...
Bon, vous aurez réussi à me faire sourire malgré tout :-)
Maintenant, j'arrête là, tout ça ne mène nulle part. Vous ne me semblez pas être dans vos meilleurs dispositions de toute façon et j'ai un métier aussi, figurez vous ;-)
ioguix a écrit :...pourquoi ne pas avoir répondu à sa demande de plan des autres moteurs publiquement ?
Ayant reçu un mail privé, j'ai répondu à ce mail. Est-ce mal ? Suis-je stupide ?
Oh, soit. Vous n'étiez pas obligé de savoir que pgsql-bugs est une liste de diffusion...
Ceci dit, notez que Tom Lane vous a répondu avec cette liste en copie et non en privé:
http://www.postgresql.org/message-id/19 … .pgh.pa.us
Avez-vous vu sa réponse à propos du plan de SQL Serveur que vous lui avez fourni en privé ?
Je n'ais pas eu de réponse en retour de mon mail envoyé en privé !
Si si, mais sur la liste en directe. Donc pour information:
http://www.postgresql.org/message-id/28 … .pgh.pa.us
Ouvrez vous un bug pour être constructif ou pour d'autres raisons ?
Et vous, avec ce post, pensez-vous réellement constructifs ? Moi je pense que vous maîtrisez l'art d'enculer les mouches...
D'autre part, il se trouve que je travaille et hier j'étais chez Alstom, un de mes clients, oub comme par hasard nous allons passer d'une base PostGreSQL qui donne des performances lamentables à une base SQL Server....
je suis revenu à 21h chez moi et j'avoue que je n'avais plus le temps de me consacrer àn PG...
Peut être êtes vous un fonctionnaire effectuant 32 h par semaine avec 8 semaines de congés payé.. pas moi, j'ai une boite à faire fonctionner et des cours à donner à des ingénieurs...
Disons que face à votre non contribution, je me posais bien des questions. Maintenant, je comprends que vous ne suivez simplement pas la liste de discussion, et donc la discussion à propos de votre bug.
Quant à votre expérience, je ne vois pas tellement quoi en faire sans le contexte. "Comme par hasard", il y a 1000 façon de détruire ce retour d'expérience. Je ne m'y emploierais pas car vu le changement de ton que vous avez initié, je ne souhaite pas argumenter avec vous.
À propos de mon temps de travail...pareille, trop simple à détruire, trop bas, je vous laisse dans votre imaginaire.
Ps: Pourquoi dieu est-il nécessaire de faire un screenshot pour récupérer un plan sous SQL Serveur ?!
Vous simplifiez de manière parfaitement stupide l'envoi que j'ai fait; J'espère que c'est par ignorance... Car si c'était pas volonté, cela prouverait votre niveau de mauvaise foi...
Je vous rassure, c'est par pure ignorance de SQL Server, sinon, je n'aurais pas posé la question. Et oui, je suis curieux, que voulez vous.
Donc pour faire simple :
les plans de requête détaillés sont fournit par SQL Server sous forme XML dont voici un exemple :...
Trouvez vous cela plus facile que la représentation graphique ?
Bien entendu, c'est ce XML qui est interprété graphiquement. mais n'étant pas sur que Tom lane dispose de l'outil de lecture des plans, j'ai envoyé les deux par sécurité...
Ais-je bien fait ou suis-je à vos yeux un crétin ?
Vous auriez pu proposer les deux représentations par soucis du détail. Ceci dit, ça ne fait pas de vous un crétin, peut-être en faite vous un peu trop non ?
Ahahah
Avec tant d'humour, vos cours en école d'ingé doivent être tellement amusants !Effectivement, vous en avez tellement !!!
Mais ce qui est pire dans votre comportement, c'est que vous ne me donnez pas du tout envie de continuer à traiter ce sujet et donc votre mail aura l'effet inverse de celui escompté : j'abandonne la partie ! Ayant dû consacré 1h pour répondre à vos attaques infantiles, c'est 1h de perdu pour répondre à Tom lane...
Mh, votre choix. En attendant, le message est passé sur pgsql-bugs, donc si vous n'avez plus rien à y apporter hein...
Quand à Tom Lane, il m'a bien amusé en disant, "c'est pas bien grave, personne ne s'en sert..." !
Plutôt que de détourner le fond de la réponse de Tom Lane (PS: je n'ai pas l'intention d'en débattre avec vous), pourquoi ne pas avoir répondu à sa demande de plan des autres moteurs publiquement ?
Avez-vous vu sa réponse à propos du plan de SQL Serveur que vous lui avez fourni en privé ? Avez vous une réponse à lui apporter ? Ouvrez vous un bug pour être constructif ou pour d'autres raisons ?
Ps: Pourquoi dieu est-il nécessaire de faire un screenshot pour récupérer un plan sous SQL Serveur ?!
Pour historique :
http://www.postgresql.org/message-id/28 … .pgh.pa.us
http://www.postgresql.org/message-id/53 … dalibo.com
Peut être sous PG, les gens hésitent à faire des jointures de peur de casser le moteur...
Ahahah
Avec tant d'humour, vos cours en école d'ingé doivent être tellement amusants !
J'imagine que ton trigger se déclenche avant la mise à jour (tout dépend de sa définition), donc si tu modifies les données de NEW, ce sont ces données qui seront in fine dans la table.
Ceci dit, on a tous (plus ou moins) été étudiant avant, avec le stress qui va avec et le manque de temps pour tout gérer. Mais ça n'empêche pas d'apprendre à lire une documentation en prenant son temps pour la comprendre pour éviter de perdre plus de temps ensuite à faire n'importe quoi...
Mes profs fouillaient internet pour comparer nos travaux avec de l'existant. Je te souhaite d'avoir des profs moins pointilleux, à la lecture de ce fil, à leur place je sortirais le colt.
PS: et on ne mord pas une main qui se tend vers toi et tente de t'aider en te pointant la bonne doc. Doc que tu n'avais probablement pas lue.
À propos des Hints, je vous propose d'aller en discuter avec les développeurs. Vous ne serez que le n-ième "DBA" Oracle qui sera venu les importuner à ce propos. Et pensez bien à les titiller avec les mêmes types de remarques que vous faites ici, histoire de pimenter un peu la discussion.
Moi, je vais m'installer confortablement devant ma mailing-list pgsql-hackers, prendre des popcorn et regarder si vous aurez des arguments différents de tous ces autres. À moins qu'ils vous balaient avec dédains en vous renvoyant à un simple lien [1] comme n'importe quel quidam...
En attendant, plutôt que de détailler et insister sur les (je cite) "grandes lacunes de PostgreSQL", vous pourriez plutôt titrer "Obstacles et différences à prévoir lors d'une migration vers PostgreSQL" et les façons de les contourner ou alors bien souvent...l'autre façon de faire dans le monde PostgreSQL.
Si je prends l'exemple des tablespaces, contrairement à Oracle, les développeurs de PostgreSQL ont décidés de ne pas ré-implémenter la roue. Il y a bien mieux à faire ailleurs. Ça vous demandera d'ôter vos œillères et aller voir coté système les solutions qui existent pour assurer le même type de souplesse...
Dommage, si vous passiez un quart de votre temps actuel accordé au pourissage pour écrire des choses constructives ou à participer de façon constructive à la communauté, on vous aurait peut-être cru quant à vos bons sentiments envers PostgreSQL.
normalement, avec une fonction SRF, la syntaxe suivante retourne tout le résultat dans un seul champs effectivement:
SELECT function (...)
Si vous voulez que chaque champs du type composite soit dans une colonne propre, utilisez la syntaxe suivante:
SELECT (function (...)).*;
Soit, avec l'exemple de Marc:
SELECT a.*, (b(test.a)).* from test;
Bonjour,
Malheureusement, le paquet Debian pour phpPgAdmin (PPA) n'a pas été mis à jour depuis un certain temps.
Il vous faut utiliser la dernière version de PPA (5.0.2), qui dispose de plusieurs correction de bug, disponible à cette adresse:
Bonjour,
Il me semble que le problème original pourrait venir d'ailleurs: l'architecture elle même.
En effet, si vous utilisez une application PHP (avec de l'ajax ou non), il ne vous sera pas possible de créer et gérer des transactions à travers plusieurs appels coté serveur, que ce soit à avec modphp ou php-cgi.
Effectivement, dans le cas d'apache, entre 2 requêtes au serveur HTTP, même si vous conservez ouverte la connexion et la sessions entre votre httpd et PostgreSQL, rien ne dit qu'apache vous attribuera le même thread que pour votre requête HTTP précédente. La page suivante, issue de la documentation de PHP traite de ce sujet:
http://fr2.php.net/manual/fr/features.p … ctions.php
Une solution à votre problème serait donc d'utiliser les transactions préparées. Voir: http://docs.postgresql.fr/9.0/sql-prepa … ction.html
je ne comprends pas.
[...]
Je pense que le problème est là.
Depuis août, il a pu arriver bien des choses à ce serveur, surtout si vous ne le supervisez pas. PostgreSQL ne s'arrête pas seul comme par magie.
Qui a accès au serveur ? comment a été installé PostgreSQL ? comment a été créé votre instance (répertoire $PGDATA) ? Comment a-t-il été lancé en mai ? le serveur a-t-il été redémarré depuis ? avez vous les notions de bases sur un OS Linux ?
Bonjour,
Il semble que le fichier que vous utploadez ne soit pas lui même en UTF8.
Vous auriez le même problème avec psql lui même. Il vous faut préciser au début de votre script l'encodage utilisé avec la requête "SET client_encoding TO 'iso8859-1';"
Exemple:
ioguix$ cat /tmp/test.sql
INSERT INTO test VALUES (3, 'fête');
ioguix$ psql pagila
pagila=> \i /tmp/test.sql
psql:/tmp/test.sql:1: ERROR: invalid byte sequence for encoding "UTF8": 0xea7465
ASTUCE : This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
pagila=> SET client_encoding TO 'iso8859-1';
SET
pagila=> \i /tmp/test.sql
INSERT 0 1
Bonjour,
Cette question ne porte plus sur PostgreSQL mais sur PHP désormais...
Il vous faut récupérer la valeur du champs en utilisant une des fonctions du type pg_fetch_result, pg_fetch_array, pg_fetch_row, etc
voir par exemple:
* http://php.net/pg_fetch_result
* http://php.net/pg_fetch_array
* http://php.net/pg_fetch_row
et voilà un exemple:
$res = pg_query("select col_description('16397','2')");
$comment = pg_fetch_result($res, 0, 0);