Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#101 Re : Optimisation » Message d'erreur dans les logs pg » 25/04/2019 13:54:58
Si ça reproduit à intervalles réguliers, c'est une sonde.
Par exemple si je fais ça sur mon Ubuntu:
$ nc localhost 5432 </dev/nullJ'obtiens ça immédiatement dans mon log postgresql:
2019-04-25 13:51:44 CEST LOG: paquet de démarrage incompletIl faut supprimer le problème à la source parce que côté serveur, il me semble qu'il n'y pas de solution pour couper ce message.
#102 Re : PL/pgSQL » shell commande \copy sans être superuser » 25/04/2019 13:39:51
\copy n'est pas une commande SQL utilisable dans une requête ou du code serveur.
C' est une méta-commande dans psql qui va déclencher un COPY nomtable FROM STDIN, puis va lire le fichier en local et envoyer son contenu au serveur à travers la connexion.
Pour lire un fichier du serveur il faut être superuser en effet. Si un superuser veut donner à un non-superuser le droit de le faire, la solution classique est de faire cette opération via une fonction créée pour l'occasion et avec une clause SECURITY DEFINER. Tout ce que lance la fonction sera exécuté avec des droits superuser.
Sur les versions les plus récentes de PostgreSQL (11) il y a aussi un droit spécifique pg_read_server_files qui permet de lire n'importe quel fichier.
voir https://www.postgresql.org/docs/11/default-roles.html
#103 Re : Général » Sauvegarde avec PGBACKREST. » 19/04/2019 17:02:15
Pour la partie de la question qui concerne %p, ce %p est interprété par PostgreSQL et désigne le chemin complet du fichier WAL. Dixit la doc:
"In archive_command, %p is replaced by the path name of the file to archive, while %f is replaced by only the file name.
(The path name is relative to the current working directory, i.e., the cluster's data directory.)"
Si vous remplacez %p par "/emplecement/file_system/pg_archive", ça ne marchera pas puisque %p désigne le fichier à archiver.
Pour la seconde question: "Ou alors dans le fichier pgbackrest.conf, est il possible de définir l'archive-path comme c'est le cas pour le "repo-path"?"
Je ne connais pas spécialement pgBackRest mais vu que le repo path est défini comme étant:
(cf https://pgbackrest.org/configuration.html):
"Path where backups and archive are stored.
The repository is where pgBackRest stores backups and archives WAL segments."
Il semble que la séparation disque que vous espérez entre les backups et les archives n'existe pas pour lui.
#104 Re : Général » Quel type de donnée utiliser ? » 18/04/2019 12:37:46
Si cet objet n'est pas sérialisable tel quel, il faut entrer dans le détail de l'objet et comprendre quelle composante de l'objet sert à quoi, et écrire soi-même les routines objet->version sérialisée et version sérialisée->objet
#105 Re : Général » Quel type de donnée utiliser ? » 18/04/2019 12:30:29
En JS on peut a priori:
- appliquer JSON.stringify(var_objet) pour sérialiser l'objet (=produire une version texte stockable)
- le stocker en base dans un colonne text ou json
- le recréer en JS avec JSON.parse(texte)
#106 Re : Général » [9.3] Postgresql DATABASE listed in pg_database doest not exist » 15/04/2019 16:42:08
Est-ce qu'il y a un index unique sur pg_database.datname ou pas?
#107 Re : Général » [9.3] Postgresql DATABASE listed in pg_database doest not exist » 15/04/2019 15:12:40
Et que dit un REINDEX TABLE pg_database ?
#108 Re : Général » [9.3] Postgresql DATABASE listed in pg_database doest not exist » 15/04/2019 14:28:41
Quand je lance un select via datname de la table pg_database, les deux lignes s affichent.
Il faudrait voir le résultat de cette requête:
SELECT datname, datname::bytea, md5(datname) FROM pg_database;Un vrai doublon n'est pas impossible si l'index unique sur pg_database.datname est corrompu, mais ce n'est pas le plus probable.
Indépendamment de ça, la suppression manuelle du répertoire fait que comme dit Guillaume, le PGDATA peut être considéré comme perdu maintenant.
#109 Re : PHP » pg_connecte ne retourne rien » 05/04/2019 17:34:51
Lorsque pg_connect échoue, il affiche ou non une erreur en fonction du paramètre php display_errors et éventuellement de error_log.
S'il ne le fait pas, pg_last_error($conn) ne le fera pas non plus parce que $conn sera vide.
Il faudrait plutôt faire par exemple
echo htmlentities(error_get_last()['message']);pour avoir le message lorsque pg_connect() a renvoyé false.
La recommandation pour les sites de prod est de ne pas afficher par défaut les erreurs à l'écran, puisque ça peut fuiter des informations qu'un visiteur n'a pas à connaitre.
#110 Re : Général » current_timestamp dans boucle non prise en compte » 03/04/2019 13:42:28
current_timestamp() est l'horodatage du début de la transaction, donc il ne change pas pendant une transaction.
C'est clock_timestamp() que vous voulez ici.
#111 Re : Général » Format date stocké en MM/DD » 30/03/2019 18:55:45
Le type date a forcément une année. Si vous ne voulez pas de l'année dans un champ, il ne faut pas utiliser ce type.
Un entier pour le mois et un entier pour le jour pourraient faire l'affaire, regoupés ou pas dans un type composite.
#112 Re : Site PostgreSQL.fr » Postgresql : socket Unix « /var/run/postgresql/.s.PGSQL.5432 » ? » 29/03/2019 17:59:01
Vous pouvez vous connecter à la version 11 en faisant:
psql --cluster 11/main [autres options]
Vous pouvez aussi simplifier la situation en supprimant l'instance 10 si vous n'en avez plus besoin, avec pg_dropcluster, ce qui fera que le port par défaut 5432 deviendra disponible pour l'instance 11.
#113 Re : Site PostgreSQL.fr » Postgresql : socket Unix « /var/run/postgresql/.s.PGSQL.5432 » ? » 29/03/2019 17:35:45
Elle écoute sûrement sur un autre port à la suite de l'upgrade.
Que sort la commande pg_lsclusters ?
Si c'est ça, il est possible de la remettre sur le port 5432, c'est plus pratique quand on a une seule instance active.
Pour ça il faut éditer la ligne port=... du fichier postgresql.conf et relancer l'instance.
#114 Re : Général » Postgresql prefix wildcard for full text search » 29/03/2019 15:54:23
to_tsquery ne permet pas de faire ça, mais l'extension pg_trgm le permet.
On fait un index GIN ou GIST sur la colonne et il est utilisé automatiquement par une clause LIKE colonne '%foo%' ou ILIKE colonne '%foo%'. Accessoirement pg_trgm permet aussi de reconnaître des termes saisis de manière approximative.
#115 Re : Général » [PG10] Requête préparée, INSERT nombre variable de ligne par tableau » 09/03/2019 17:54:17
Il n'y a pas besoin de boucle FOR, il faut utiliser plutôt unnest() pour générer une ligne par élément du tableau.
Concrètement, par rapport à la requête de départ, si $5 est de type bigint[] (donc un tableau), le second
INSERT devrait ressembler ça:
INSERT INTO documents_types (id_document, id_type)
SELECT nouveau_doc.id_document, liste.type_doc
FROM nouveau_doc CROSS JOIN unnest($5) AS liste(type_doc)#116 Re : Installation » gestion pgdata multi cluster » 28/02/2019 13:58:58
Le multi-cluster est géré côté client par la couche pg_wrapper documentée ici:
http://manpages.ubuntu.com/manpages/bio … per.1.html
Côté serveur, ce sont les commandes pg_lsclusters, pg_ctlcluster etc...
http://manpages.ubuntu.com/manpages/bio … ers.1.html
En interne ces commandes vont chercher la config par cluster sous /etc/postgresql/... et ensuite se réfèrent au(x) PGDATA(s) trouvé(s) dans ces configs.
#117 Re : Sécurité » Erreur pendant la supression de l'utilisateur » 19/02/2019 15:28:00
Après REASSIGN OWNED BY, il faut faire DROP OWNED BY, et après DROP USER.
C'est expliqué en détail dans cette partie de la doc:
https://docs.postgresql.fr/11/role-removal.html
#118 Re : Sécurité » ERREUR: doit être le propriétaire de la table » 16/02/2019 14:37:24
Pour que plusieurs utilisateurs puissent faire des DROP sur des objets, il faudrait que les objets appartiennent à un rôle dont ces utilisateurs sont membres. Par exemple:
CREATE ROLE createur;
GRANT createur TO user1, user2, user3;
si user1 veut créer une table, il fait
SET ROLE createur;
CREATE TABLE nomdetable(....) -- la table appartiendra au rôle "createur"
RESET role;
Si ensuite user2 veut détruire cette table, il a le droit de faire
DROP TABLE nomdetable;
#119 Re : Général » utiliser la fonction uuid_generate_v4() dans un update de champs jsonb » 11/02/2019 18:56:03
Vous pourriez utiliser une forme plus simple à écrire:
UPDATE nomtable SET col_json = col_json ||
format(
'{"code01":"%s", "code02":"%s"}',
uuid_generate_v4(),
uuid_generate_v4()
)::jsonb;qui si je comprends bien, fait ce que vous voulez. Cette écriture permet d'ajouter/enlever assez facilement des clefs valeurs.
#120 Re : Général » Segmentation fault » 06/02/2019 18:21:26
Côté logiciel vous n'utilisez à première vue que du très standard que tout le monde utilise, donc un défaut hardware est une piste possible. En particulier, une barrette mémoire défaillante peut produire ce genre de plantage récurrent.
Vous pouvez déjà vérifier si votre serveur a de la mémoire à correction d'erreur (ECC) avec la commande
dmidecode --type memory (chercher "Error Correction Type" dans le résultat)
et si oui regarder s'il y a des erreurs dans le syslog relatives à la mémoire
#121 Re : Général » Création simplifiée des formulaires de saisie pour Postgresql » 03/02/2019 20:37:40
l'équipe souhaite que ce soit installé sur nos serveurs (donc google forms, ou framaforms ne sont pas envisageables)
Pour framaforms, vous pouvez l'installer sur vos propres serveurs, comme en principe tout ce que fait framasoft.
Cf https://framagit.org/framasoft/framaforms d'après quoi c'est un CMS Drupal+modules et PostgreSQL comme backend.
Qu'est-ce qu'est un tableau par rapport à un formulaire? C'est un récapitulatif non remplissable?
#122 Re : Général » Caractères spéciaux dans les recherches full text » 30/01/2019 13:29:30
On peut voir l'EXPLAIN ANALYZE de la requête lente et la requête de création de l'index composé ?
#123 Re : Général » Caractères spéciaux dans les recherches full text » 28/01/2019 18:09:31
Tant que vous ne mettez pas votre configuration spécifique en tant que conf par défaut (via default_text_search_config) postgres ne va pas l'utiliser implicitement, donc pas d'effet de bord à craindre.
#124 Re : Général » Caractères spéciaux dans les recherches full text » 28/01/2019 17:51:57
De mémoire le parser est relié à une configuration de recherche (TEXT SEARCH CONFIGURATION): on peut en avoir plusieurs par base et donner cette configuration comme argument "regconfig" aux fonctions comme to_tsvector ou to_tsquery.
#125 Re : Site PostgreSQL.fr » Question sur l'utilisation d'une fonction dans requête de type SELECT » 22/01/2019 20:03:05
WHERE not null élimine la ligne donc "non renseigné" n'est pas compté dans la requête.
Pour des valeurs non nulles mais au mauvais format je ne vois pas, mais des exemples pourraient éclairer.