Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#276 Re : Général » accéder à distant à une base de donnée » 14/09/2017 17:00:10
Il faut trouver l'erreur de syntaxe dans le pg_hba.conf et à travers les copier-coller sur le forum on ne voit pas le problème.
Est-ce que vous pouvez uploader votre pg_hba.conf quelque part sur un service du genre google drive, qu'on ait la copie exacte du fichier à l'octet près?
#277 Re : Général » accéder à distant à une base de donnée » 14/09/2017 16:02:07
lLe log me donne effectivement le n° de la ligne, le message sans plus.
...
J'ai édité pg_hba.conf avec le bloc note de word
Quel est le numéro de ligne indiqué par l'erreur? En particulier est-ce que c'est la ligne 1?
#278 Re : Général » accéder à distant à une base de donnée » 12/09/2017 13:21:48
Il y a une erreur de syntaxe dans le pg_hba.conf.
Pour savoir où exactement, regarder le log côté serveur qui doit avoir l'erreur complète avec le numéro de ligne.
Comme la ligne ajoutée semble correcte, peut-être que l'éditeur de texte utilisé a mis un marqueur BOM en début de fichier. De mémoire d'autres utilisateurs de ce forum ont eu ce problème sur Windows.
BOM = https://fr.wikipedia.org/wiki/Indicateu … des_octets
#279 Re : Général » valeurs binaires de tableaux » 11/09/2017 22:24:36
Il est possible de demander du binaire avec un curseur binaire, indépendamment de l'interface côté client:
par exemple:
BEGIN;
DECLARE c binary cursor for select array[1,2]::int[];
FETCH FROM c; -- le résultat sera en binaire
...
END;Mais la plupart des interfaces ne savent pas quoi faire avec du binaire.
En C on peut utiliser PQexecParams() et autres fonctions de la même génération qui permettent (sans utiliser de curseur) de demander un résultat en binaire, et aussi de passer des paramètres $1, $2,... en binaire.
Mais l'interprétation du résultat reste à la charge du programmeur. Chaque type a un encodage binaire spécifique, documenté dans les sources, mais il y a une bibliothèque idéale pour ça: http://libpqtypes.esilo.com/
#280 Re : Général » Timing de requetes sur PSQL » 06/09/2017 17:36:23
Côté client la commande \timing de psql est faite pour ça.
#281 Re : Optimisation » Optimisation requête » 28/08/2017 15:50:08
Voici mon plan d'exécution sur une BDD locale qui ne contient pas des données.
On voit bien en quoi les plans d'exécution sont différents, mais là le résultat du count(*) semble être zéro.
Comme les plans d'exécution dépendent entre autres des statistiques sur les tables, ça n'a pas trop d'intérêt d'analyser des plans sur des données dont les volumes ne réflètent pas l'environnement de production.
#282 Re : Optimisation » Optimisation requête » 25/08/2017 16:15:11
Il faut utiliser EXPLAIN ANALYZE pour comparer les plans d'exécution
Garder aussi à l'esprit que WHERE IN () et INTERSECT ne font pas la même chose s'il y a des NULL dans les valeurs.
Et si vous savez qu'il n'y a pas de NULL dans les valeurs, est-ce que le moteur d'exécution peut le savoir avec 100% de certitude dans le contexte de la requête?
#283 Re : Sécurité » Connexion SSL sans authentification » 25/08/2017 15:45:53
N'est t'il pas possible d'établir une connexion sur le même modèle que TLS ou seul le serveur possède un couple (certificat, clef privée) ?
C'est déjà comme ça, il n'y a pas besoin de certificat côté client pour utiliser sslmode=require.
D'ailleurs le mode par défaut sslmode=prefer essaye une connexion TLS en premier et une connexion non chiffrée uniquement si le serveur en face n'est pas configuré pour TLS, si bien que les connexions peuvent être chiffrées sans même avoir rien demandé.
(remarque: TLS et SSL désignent la même chose, TLS c'est le juste le nom moderne).
#284 Re : Général » HELP - Requete posant problème » 16/08/2017 18:57:36
Lorsque je laisse cette condition : a.lot_id = c.id : je ne dispose que des produits de types terminaux (lot_id = IMEI)
Lorsque je l'enlève, la requête semble effectuer un produit cartésien qui me remonte des résultats naturellement incohérents.
La requête cherche visiblement a gérer le cas où a.lot_id est NULL et simultanément le cas où il ne l'est pas.
D'où cette condition:
(b.product_tmpl_id = f.id OR a.lot_id = c.id)
qui a l'air d'exprimer le fait que quand a.lot_id n'est pas NULL il faut le joindre avec c.id (mais dans ce cas il va y avoir un produit cartésien avec les lignes de f), et dans le cas contraire là il faut joindre b avec f.
Autrement dit si s'il y a un lot il n'y a pas de produit et vice-versa.
Si c'est bien ça l'idée, il serait plus simple de faire deux requêtes séparées pour chacun des cas, sortant le même jeu de colonnes, et les relier avec une clause UNION ALL.
#285 Re : PSQL » Requête qui ne me donne pas toutes les lignes de ma table » 13/07/2017 11:42:01
ce serait du genre
FROM
n_bdt_bati_indifferencie_s_000 LEFT JOIN n_apr_bati_l_000
ON (n_bdt_bati_indifferencie_s_000.id = n_apr_bati_l_000.id_bat)
LEFT JOIN n_apr_adresse_p_000
ON (n_apr_adresse_p_000.id = n_apr_bati_l_000.id_adr)#286 Re : PSQL » Requête qui ne me donne pas toutes les lignes de ma table » 11/07/2017 16:10:10
Ce bout de requête:
n_bdt_bati_indifferencie_s_000 LEFT JOIN n_apr_bati_l_000 ON n_bdt_bati_indifferencie_s_000.id = n_apr_bati_l_000.id_bat
dit de mettre des colonnes nulles à la place de celles de n_apr_bati_l_000 pour les lignes de n_bdt_bati_indifferencie_s_000 où la condition de jointure n'est pas satisfaite. Ca va donc créer entre autres des n_apr_bati_l_000.id_adr à NULL
Mais cette condition là:
WHERE n_apr_adresse_p_000.id = n_apr_bati_l_000.id_adr
implique que les lignes en question vont être filtrées parce n_apr_adresse_p_000.id = NULL va être toujours NULL, donc négatif pour un WHERE.
Généralement la solution est de combiner toutes les tables en LEFT JOIN, au lieu de seulement 2 sur 3 ici.
#287 Re : Installation » [RÉSOLU] Système de fichier préconisé. » 07/07/2017 18:45:44
Une présentation sur le sujet qui peut éventuellement aider:
https://fr.slideshare.net/fuzzycz/postg … fs-and-zfs
Pour les perfs, en plus du choix du FS, les options de montage entrent en ligne de compte.
#288 Re : Site PostgreSQL.fr » Ajout à planet.postgresql.fr » 28/06/2017 15:02:50
Merci Julien!
#289 Re : Site PostgreSQL.fr » Ajout à planet.postgresql.fr » 28/06/2017 13:54:51
Tu me confirmes que ce flux ne contiendra que des articles liés à PostgreSQL et en français ?
Tout à fait!
#290 Site PostgreSQL.fr » Ajout à planet.postgresql.fr » 28/06/2017 12:57:46
- dverite
- Réponses : 4
Bonjour,
Je souhaiterais demander l'ajout de http://blog-postgresql.verite.pro/feed.xml
aux flux de planet.postgresql.fr
Est-ce qu'il suffit de demander ici ou bien il y a un formalisme prévu à suivre?
Merci
- Daniel
#291 Re : Migration » The Microsoft Access database engine stopped the process... » 22/06/2017 16:02:30
because you and another user are attempting to change the same data at the same time
Je crois me souvenir qu'Access avec ODBC détermine ça par le fait que les valeurs qu'il relit d'une ligne lors d'une demande de mise à jour ne sont pas les mêmes que celles qu'il a trouvé quand il a l'a lu précédemment.
Donc de son point de vue, un trigger qui change la valeur d'une colonne, c'est "another user".
C'est aussi pour ça que cette erreur peut survenir sur certains de types de données un peu exotiques, pour lesquels parfois Access ne reconnait pas ce que lui-même a mis dans la table après relecture et réinterprétation via la couche ODBC.
PS: il faut bien voir qu'un système d'historisation "soft-delete" qui transforme carrément les DELETE en UPDATE est très intrusif et surprenant pour le côté client. Le fait qu'Access/ODBC soit paumé n'est qu'une conséquence parmi d'autres de cette méthode.
Personnellement je préfère sans hésiter un système qui historise les lignes effacées en les copiant dans d'autres tables, comme mentionné dans une discussion précédente qui concernait vraisemblablement le même projet:
http://forums.postgresql.fr/viewtopic.php?id=4146
#292 Re : Général » Formater les colonnes » 24/05/2017 17:48:59
A ma connaissance il n'y a pas d'équivalent au COL de sqlplus dans psql.
COL colonneDeTypeChar FORMAT A20 indique que dans l'affichage futur d'un résultat, quand il y a une colonne qui s'appelle "colonneDeTypeChar", la largeur affichée pour cette colonne est limitée à 20 caractères.
Pour l'usage interactif, psql a l'affichage "étendu" avec la commande \x qui affiche une colonne par ligne et généralement suffit quand certaines colonnes sont trop larges.
Sinon en mettant LESS=-FXS en pager, ça fait une pagination horizontale dans laquelle on peut scroller avec les flèches <- et -> du clavier. Ca permet de lire par ex. la sortie de SELECT * FROM pg_stat_activity de manière plus efficace que l'affichage par défaut.
#293 Re : PSQL » \copy avec des boolean » 26/04/2017 15:07:31
Comment voir que telle colonne correspond à telle valeur sans importer? C'est assez facile avec les commandes Unix sed et paste.
1. faire
sed -e 's/,/\n/g' > entete et copier coller la ligne d'entête dans le terminal, en entrée standard. Elle va se retrouver dans le fichier entete mais au format une ligne par champ.
2. faire la même chose avec la ligne de données:
sed -e 's/,/\n/g' > ligne3. faire
paste entete ligneet ça donne ce type de résultat:
...
BankCounty/State
BankPostalCode
BankCountry
AccountNr
Swift
Commission Base 0
!!!!!!!!!!!!!!!Credit!!!!!!!!!!!!!! 0
Currency
RSC-Link !!!!!!!!!!!!!!!f!!!!!!!!!!!!!!
ADDED
RIA_NR 0
ANNICK_NR 0
Last_Contacted
ContactCycle 60
UPDATED f
...
#294 Re : PSQL » \copy avec des boolean » 26/04/2017 13:59:02
La colonne Credit correspond bien à la valeur 0 dans la ligne CSV. En l'état le plus probable parait être une désynchro des colonnes. Vous pouvez montrer le résultat de \d sur la table destination dans psql?
#295 Re : Général » ExclusiveLock infini sur un SELECT pg_stat_get_backend_pid » 20/04/2017 16:11:21
Le fait de compter sur le serveur pour couper ces connexions, c'est prendre le problème à l'envers. C'est le client (en l'occurrence le pooler) qui est à l'initiative de l'ouverture de connexion, c'est à lui de savoir quand il n'en a plus besoin et de la fermer.
Même si une connexion est ouverte depuis longtemps et ne fait rien, le serveur ne peut pas deviner si une requête arrivera la milliseconde d'après ou pas.
En principe libérer des connexions inutilisées fait partie des fonctions de base d'un pooler.
Des connexions "idle in transaction" sur de longues durées, c'est problématique, parce qu'en fonction de ce qu'a fait la transaction avant d'arriver à cet état, il est possible que des ressources restent verrouillées, ce qui empêche les autres transactions de progresser. Un problème bien connu est aussi que ça empêche VACUUM de faire son travail.
Les connexions simplement "idle" ne posent pas ce problème. Il est quand même bon de les éliminer si elles ne servent plus, mais ce n'est pas du tout la même criticité.
#296 Re : Général » Import CSV: droits, clé primaire, choix champs - sql ou psql et batch? » 13/04/2017 16:37:04
Pour l'erreur 1 c'est manifestement un BOM en début de fichier
Voir https://fr.wikipedia.org/wiki/Indicateu … des_octets
La solution est de paramétrer l'éditeur de texte pour ne pas mettre de BOM.
Pour les erreurs 2 et 3 il faudrait voir les lignes précédentes, par exemple quand il dit LIGNE 9, il faut regarder au moins 9 lignes au-dessus pour voir ce que lui interprète comme le début de l'instruction SQL.
#297 Re : Général » Import CSV: droits, clé primaire, choix champs - sql ou psql et batch? » 10/04/2017 16:46:32
- Tout ce que je produit actuellement sur mon PC à l'aide de Postgresql/postgis, PgAdmin et QGIS (ainsi qu'avec mes fichiers shape et csv initiaux) ne pourra pas être reproduit (et donc les résultats de requêtes - tables ou vues ) par une autre personne sur un autre PC ?
Même si cette autre personne installe également Postgresql/postgis, PgAdmin et QGIS, et utilise un projet de QGIS qui charge les vues ?
Il ne pourra pas y avoir d'import/export des fichiers csv si le chemin est toujours C:\Users\Public\Documents par exemple ?
Il n'y a pas d'impossibilité mais il y a des choix d'organisation à faire en fonction des objectifs.
Dans la description ci-dessus il est difficile de cerner qui produit des données, qui doit les importer, qui les consomme, et quelles sont les données communes ou non communes entre intervenants.
En tout cas une organisation assez classique est d'avoir un seul serveur PostgreSQL (une seule "instance") pour pouvoir mettre en commun les données, et des postes clients multiples. Les postes client n'ont pas de base de données PostgreSQL mais ils ont des applications comme pgAdmin qui se connectent à la base. Ca a l'avantage qu'il y a un seul serveur à administrer, et que les données sont en commun.
#298 Re : PL/pgSQL » dblink ou postgres fdw ou ? » 08/04/2017 21:02:01
mais le disconnect ne sera jamais atteint, bien sûr.
Si parce que RETURN QUERY ne termine pas l'exécution de la fonction, contrairement à RETURN tout court.
Cf la doc: http://docs.postgresql.fr/9.6/plpgsql-c … tures.html
RETURN NEXT et RETURN QUERY ne quittent pas réellement la fonction -- elles ajoutent simplement zéro ou plusieurs lignes à l'ensemble de résultats de la fonction. L'exécution continue ensuite avec l'instruction suivante de la fonction PL/pgSQL
#299 Re : Général » Import CSV: droits, clé primaire, choix champs - sql ou psql et batch? » 07/04/2017 17:58:26
Mais peut-être n'est-ce pas la bonne solution compte-tenu de l'utilisation envisagée par la suite :
Je suis en train de créer une opération qui devra être réalisable par une tierce personne, sur un autre ordinateur, avec des fichiers mis à jour régulièrement : l'idée est de faire enregistrer les csv toujours au même endroit de chaque ordinateur et de les nommer selon les appellations utilisée dans la requête SQL ; afin de faire les importer et lancer la requête sur l'ensemble des tables présentent dans la base postgre/postgis (tables permanentes et nouvelles.csv) . je me pose quelques questions du coup sachant que les droits d'utilisateurs peuvent bloquer sur certaines requêtes :
Oui ça pose un problème si pgadmin3 ne tourne pas sur la même machine que le serveur postgresql.
Avec COPY le serveur ne reçoit pas le contenu du fichier, il reçoit le chemin du fichier.
Si le chemin du fichier correspond au disque local d'un autre ordinateur, il ne pourra pas l'ouvrir.
Utiliser psql et son \copy résoud ce problème là (dans ce cas c'est les données qui transitent, et non pas le chemin du fichier), et apparemment pgadmin3 n'a pas d'équivalent.
psql permet aussi d'automatiser les traitements, si les fichiers s'appellent toujours pareil il est possible d'appeler ça de manière non interactive avec
psql -f script.sql. Mais l'environnement console parait hostile à certains utilisateurs, ça dépend des habitudes et s'ils ont plutôt une culture windows/souris ou unix/clavier.
#300 Re : Général » Import CSV: droits, clé primaire, choix champs - sql ou psql et batch? » 07/04/2017 17:11:34
Concernant le message d'erreur tronqué, je pense que c'est une incompatibilité entre le client_encoding à LATIN1 (nécessaire pour le COPY, j'imagine que le fichier a des accents en iso-8859-1) et le lc_messages du serveur qui doit probablement être en français utf-8.
En guise de contournement, je suggèrerais d'ajouter
SET lc_messages = 'C'; avant le COPY. Ca devrait donner un message d'erreur en anglais mais sans problème d'encodage. Il faut être superutilisateur pour faire ça mais justement vous l'êtes.
Concernant la raison du problème, étant donné que le compte est superutilisateur, il reste l'explication que le processus postgres ne pourrait pas accéder au fichier vu qu'il est dans le répertoire perso d'un utilisateur (c:\Users\etc....\)
Le plus simple est de mettre ces fichiers à importer ailleurs sur le disque, dans un répertoire avec des droits "publics" en tout cas en lecture.