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 Général » Message associé à une contrainte (peut être une proposition) » 18/09/2024 21:23:37

alassanediakite
Réponses : 0

Bonjour
Je ne sais pas si vous avez les même sentiments que moi des messages que le SGBD envoie lors de la violation d'une contrainte (particulièrement d'un CHECK)?
Je développe mes interface surtout en MS ACCESS (à travers ODBC) mais je migre depuis 2 ans vers JAVA. Les messages d'erreurs envoyés par le SGBD ne sont vraiment pas à la portée des utilisateurs. Pour JAVA c'est plus explicite mais vraiment pour le spécialiste en BD.
J'ai l'idée de placer une description pour les contraintes et d'utiliser les vues systèmes pour renvoyer ces descriptions à travers la contrainte extraite du message.
Par exemple cette vue...

SELECT tc.conname, pg_catalog.pg_get_constraintdef(tc.oid, true), td.description
FROM pg_constraint as tc 
INNER JOIN pg_class as tt on tc.conrelid=tt.oid
INNER JOIN pg_namespace as ns on tt.relnamespace=ns.oid
INNER JOIN pg_authid as tu on ns.nspowner=tu.oid AND tu.rolname='nom_role'
LEFT JOIN pg_description as td on tc.oid=td.objoid

Peut être que vous avez des retours d'expériences.
Mais..., je me dis "Qui sont ceux qui soutiennent qu'il faut associer un message d'erreur à un contrainte directement dans le SGBD?"
@+

#2 Re : Général » Confusion avec AND et OR » 22/05/2023 20:04:29

Merci dverite
J'en ai profité en ajoutant coalesce qui evite un null comme reponse.
@+

#3 Général » Confusion avec AND et OR » 22/05/2023 18:29:08

alassanediakite
Réponses : 2

Bonjour
Je voudrais mettre en place la péremption dans une table de detail_livraison.
J'ai créé les colonnes "moisperemption" et "anneeperemption".
L'idée est de faire...
1->le mois et l'année sont tous null
2->ou, le mois est compris entre 1 et 12 et l'année est comprise entre 23 et 99.
J'ai alors créé une contrainte check de la sorte...

ADD CONSTRAINT ckperemption CHECK (
		(moisperemption IS NULL AND anneeperemption IS NULL) 
		OR (moisperemption>0 and moisperemption<13
		   and anneeperemption>22 and anneeperemption<=99)
	),

mais PostgreSQL me donne...

ADD CONSTRAINT ckperemption CHECK (moisperemption IS NULL AND anneeperemption IS NULL OR moisperemption > 0 AND moisperemption < 13 AND anneeperemption > 22 AND anneeperemption <= 99);

J'ai tester ce code...

with r as(select 0 as o, 1 as a, 23 as b
			union select 1, 0, 3
			union select 2, 2, null
		 union select 3, null, 25
		 union select 4, 0, null
		 union select 5, null, 18)
select a, b,
(
	(a IS NULL AND b IS NULL) 
		OR 
	(a>0 AND a<13 AND b>22 AND b<=99)
),
(a IS NULL AND b IS NULL OR a > 0 AND b < 13 AND a > 22 AND b <= 99)
from r order by o

voici le résultat que je ne comprend vraiment pas.

"a"     "b"        "?column?"    "?column?-2"
1      23            true                 false
0       3            false                 false
2      NULL    NULL              false
NUL     25        NULL              false
0      NULL       false                 false
NULL   18            false                 false

Seule la première ligne doit donner true (ce qui est le cas) mais tout le reste doit donner false.
Qu'est ce j'ai raté?
@+

#5 Général » le type "timetz" et "timestamptz" dans la documentation » 25/09/2022 17:19:14

alassanediakite
Réponses : 2

Bonjour
N'est ce pas une erreur, dans la documentation (en anglais comme en français), que le suffixe "tz" manque dans la liste des types date/heure? On remarque deux répétitions!
La table système pg_type donne bien les deux!

SELECT typname from pg_type where typname like 'time%'
  1. time

  2. time_stamp

  3. timestamp

  4. timestamptz

  5. timetz

@+

#6 Site PostgreSQL.fr » la page d'accueil » 15/08/2022 18:29:01

alassanediakite
Réponses : 2

Bonjour
La page d'accueil du site me donne...

Cette page n'existe plus

Vous avez suivi un lien vers une page qui n'existe plus. Vous pouvez afficher la liste des anciennes revisions pour voir quand et pourquoi la page a été supprimée, pour accéder à ses anciennes révisions ou pour la restaurer.

Le problème est-il général? ou c'est uniquement chez moi?
@+

#7 Re : Installation » erreur installation librairie PostGIS 3.1 vers 3.2 » 19/01/2022 15:21:47

Salut
Le problème peut venir du runtime de VISUAL C++. Il faut faire comparaison (dans la liste des programmes installés) entre les "Microsoft Visual C++ XXX Redistributable". Il se peut que ton dll v3.2 demande un VC runtime différent de celui de v3.1.
En principe se problème est corrigé par l'installeur, mais puisque ce dernier a rencontré des problèmes...
@+

#8 Re : Installation » erreur installation librairie PostGIS 3.1 vers 3.2 » 11/01/2022 18:55:30

Salut
Que dit le log "C:/Program Files/PostgreSQL/13/data/log"?
Si le fichier "C:/Program Files/PostgreSQL/13/lib/postgis-3.2.dll" existe, il faut voir les droits d'accès pour le compte "service reseau".
@+

#9 Re : Général » Changer le chemin du repertoire data (windows serveur 2019) » 12/08/2021 14:38:27

Salut
Après copie il faut accorder les droits (sur le dossier) au compte "Service réseau".
@+

#10 Re : Général » différent méthode de creation database » 07/07/2021 21:49:45

Salut et merci des éclaircissements

rjuju a écrit :

Pour le "surtout sur windows", je vois énormément de personnes ayant des problèmes d'encodage (à priori à cause de l'encodage natif win1252 de windows, contre utf8 pour le reste du monde)...

Windows est en UNICODE par défaut. Pour les tris et le jeux de caractères c'est la région géographique par défaut mais (pour une colonnes) il est possible de choisir dans ICU (je ne vous apprends rien smile).
@+

#11 Re : Général » différent méthode de creation database » 03/07/2021 16:00:29

Salut

rjuju a écrit :

Vous pouvez évidemment le faire mais vous risquez des surprises , surtout sur windows.

Pouvez-vous être plus précis. Cela aide vraiment la communauté autour de PostgreSQL.
Certains raccourcis donnent une multitude d’interprétations qui souvent font que certaines solutions sont rejeté juste par "on dit...".
@+

#12 Re : Général » pg_dump avec exclusion de table » 03/06/2021 18:27:20

Merci jmarsac
ça marche très bien avec PowerShell
@+

#13 Re : Général » pg_dump avec exclusion de table » 03/06/2021 14:20:35

rjuju a écrit :

La documentation montre une utilisation sous GNU/Linux.  Je ne pense pas que changer la documentation pour utiliser des guillemets doubles plutôt que simple soit une bonne idée, car la norme,  à ma connaissance, est :


- guillemet simple : le contenu est utilisé tel quel
- guillemet double : le contenu est "interprété" (variable résolue etc etc)


Et donc utiliser par exemple un $ (ou % sur window je crois) avec des guillemets doubles n'aurait pas le comportement attendu.


Le problème ici est que windows fait apparemment l'inverse, ou autre peut être chose.  Bref, le problème ne vient pas de pg_dump ni de postgres ni de la documentation mais de windows.  Malheureusement, lorsqu'il s'agit d'utilitaires en lignes de commandes les utilisateurs sont censé connaître le fonctionnement de leur shell / OS.

Merci c'est noté

#14 Re : Général » pg_dump avec exclusion de table » 02/06/2021 21:05:10

Merci
Votre réponse m'a mis sur le chemin.
Le problème c'est qu'il faut double quotes au lieu de simple. Mais la documentation emplois le simple quote.
-T '*.t*'
@+

#15 Général » pg_dump avec exclusion de table » 02/06/2021 20:11:21

alassanediakite
Réponses : 6

Salut
J'utilise la commande suivante...

"chemin\pg_dump.exe" --host localhost --port xxxx --username "monuser"   -T '*.t*' --format plain --schema-only --encoding UTF8 --file "cheminsave\schema_monschema.sql" --schema "monschema" "mabase"

pour exporter le DDL de ma base (par schéma) en excluant les tables dont les noms commencent par t.
J'utilise pour cela l'option -T '*.t*' ou --exclude-table='*.t*'
Mais j’obtiens toujours le DDL des tables en question.
Qu'ai-je donc raté?
@+

#17 Re : Général » Postgresql 13 windows : message d'erreur serveur ne démarre plus » 31/05/2021 16:08:49

Salut

rjuju a écrit :

De plus les traces de postgres vous donneront plus de détail sur la raison du problème.

C'est pas évident.
Certains problèmes tels l'indisponibilité du port, l'absence de droit sur le dossier "data" ne sont pas tracés dans le log de PostgreSQL.
@+

#18 Re : Général » Postgresql 13 windows : message d'erreur serveur ne démarre plus » 31/05/2021 14:05:38

Salut
Dans ces genres de situations on procède par élimination de cas.
Quelle est la dernière action sur le windows (installation, mise à jour, modification d'utilisateur, modification de droits ...) pouvant impacter le service PostgreSQL?
On peut commencer par vérifier le compte qui exécute PostgreSQL: c'est "SERVICE RÉSEAU". Si c'est pas le cas il faut le remettre; dans le cas échéant il faut vérifier que ce compte à tous les droits sur le dossier "data" de l'installation de PostgreSQL. Personnellement je place ce dossier hors de "programmes files".
@+

#19 Re : Général » Requête pour vérifier un mot de passe » 30/04/2021 20:15:16

Salut
Dans ma compréhension...
Dans un environnement client/serveur: en local signifie sur la machine cliente.
Le terme "table locale" peut paraitre étrange en effet. J'ai compris que rjuju voulais dire que l'application cliente stocke (d'une manière ou d'une autre mais sécurisé) sur la machine cliente les infos (loggin+pwd+privilèges) des users.
Je pense que rjuju n'avait pas à ajouter le terme "locale" à "table" pour cette situation. Mais c'est déjà claire chez tout le monde roll
La solution adopté par svear pour verifier le mot de passe avant la modification est excellente à mon avis.
Mais pour ce qui est de laisser la gestion des privilèges avec l'application, client vaut mieux laisser le sgbd faire bien son travail sinon avec un projet moyen à plus (avec des sous domaines compta, facturation, paie...) ça peut devenir une vraies casse tête. voir mon projet www.logicoles.com
Je crois comprendre que la gestion des privilèges par l'application cliente est motivé par le prévision d'un gestionnaire de pool de connexions.
Je ne connais rein de ce concept à part qu'il aide PostgreSQL à dépasser une limitation de nombre de connexions. Si vous avez des tutos ou cours je suis preneur.
@+

#20 Re : Général » Requête pour vérifier un mot de passe » 28/04/2021 19:08:53

Salut

Svear a écrit :

Oui. J'avais justement un schema "admin" qui contenait des tables d'admin (comme par exemple une table qui gère la licence, la clef de chiffrement, etc). J'y ai rajouté une table "users" avec le login et le hash du mot de passe.

Donc la table est sur le serveur (dans la bd) et non sur le client (dans l'application cliente).
Or...

rjuju a écrit :

La distinction se ferait côté applicatif.  Vous pouvez continuer à recevoir un utilisateur et mot de passe, et comparez ça avec une table locale contenant la liste des utilisateurs avec un secure hash du mot de passe.  Votre applicatif retient alors l'utilisateur et autorise ou refuse les actions en fonction de son profil, également stocké dans des tables locales.

Donc pour lui la table des users en local signifie sur l'application cliente. Ce que je trouve vraiment hyper compliqué à mettre en œuvre (implanter toute la gestion des privilèges coté client!).
@+

#21 Re : Général » Requête pour vérifier un mot de passe » 27/04/2021 19:11:17

Salut
La sujet m’intéresse assez.

Svear a écrit :

Donc j'ai appliqué les conseils de rjurju. J'ai créé une table des users avec leur mot de passe.

La table es-elle en local comme l'a suggéré rjuju?
Je me dit qu'avec un client en application desktop la mise à jour de la table locale peut être une casse-tête.
@+

#22 Re : pgAdmin4 » Blocage de l'éditeur de requête Query tool » 27/03/2020 13:47:46

Salut
Pour le moment le rythme de sortie de pgadmin4 dépasse celui des packages offerts par les entreprises tierces.
Le mieux est donc d'éviter pgadmin4 lors de l'installation des packages et d'installer (et mettre à jour) pgadmin4 avec l'installeur proposé par pgadmin.org (actuellement à la version 4.19!)
@+

#23 Re : PL/pgSQL » jointures sql entre 3 tables » 19/02/2020 23:14:58

Salut
Peut être...

select ... from (pays cross join film) left join box_offices on box_offices.idfilm=film.idfilm
where box_offices.idfilm is null

@+

#24 Re : Général » Infos sur le site enterprisedb » 15/02/2020 13:35:16

Salut
Problème résolu (je ne sais comment!). Je viens de télécharger les update.
Merci et @+

#25 Re : Général » Infos sur le site enterprisedb » 14/02/2020 18:39:49

Salut
ça ne marche pas chez mois. J'ai tenté avec deux machines physiques en win10 (firefox, google chrome et ie) et un ubuntu virtuel!!! J'ai toujours "adresse introuvable"

Pied de page des forums

Propulsé par FluxBB