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).

#26 Re : Installation » Mon serveur n'est pas détecté » 04/05/2020 12:47:38

Même si la commande "net start" ne donne rien, le service Windows existe d'après la commande "sc query".

Les fichiers pg_hba.conf et postgresql.conf doivent impérativement être dans dans votre cas dans "PGDATA" càd dans

c:\Program Files\PostgreSQL\9.0\data

Essayez de déplacer ces 2 fichiers à cet endroit et de démarrer le service Windows de l'instance PG avec:

sc start postgresql-x64-9.0

Est-ce qu'il y  a des erreurs ?
Est-ce qu'il y a maintenant un log dans pg_log et si oui quel est son contenu ?

#27 Re : Installation » Mon serveur n'est pas détecté » 03/05/2020 12:57:59

Pour vérifier que le service Windows de l'instance PostgreSQL est bien démarré, essayez la commande suivante (ici j'ai  la version 9.3 installée sur Windows 2016):

> net start | findstr Post
   postgresql-x64-9.3 - PostgreSQL Server 9.3

Vous pouvez aussi tester avec la commamde sc query:

>sc query postgresql-x64-9.3

SERVICE_NAME: postgresql-x64-9.3
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

Dans votre cas, la commande doit être:

sc query postgresql-x64-9.0

Ceci suppose le service Windows a le nom par défaut.


Ensuite il faut vérifier le log de l''instance qui doit se trouver par défaut dans

c:\Program Files\PostgreSQL\9.0\data\pg_log

Quel est son contenu ?
Est-ce qu'il y a des erreurs ?


NB: le fait que d'être un abonné Free ne doit rien changer (à condition que vous parlez bien d'une installation locale sur votre machine Windws 10 et non du service PostgreSQL gratuit que Free fournit mais qui est disponible uniquement par l' interface web http://sql.free.fr/phpPgAdmin.

#28 Re : Migration » Database postgres v9.3 ; installée v12 ; pb migration des données » 03/05/2020 09:58:27

Pour installer une ancienne (ou une nouvelle) version de Postgres sur Linux, il est toujours possible de l'installer à partir du code source: https://docs.postgresql.fr/9.3/installation.html.
Sinon il est possible d'utiliser l'exécutable pg_dump 12 pour exporter la base source en version 9.3 et l'exécutable pg_restore 12 pour importer  dans la base cible en version 12.


Exemple pour passer de 9.3 à 11: il faut bien utiliser les exécutables pg_dump et pg_restore de la version 11.


Je trouve la formulation de la documentation officielle assez ambigüe et qu'elle manque vraiment d'exemple sur ce point spécifique de changement de version:


Parce que pg_dump est utilisé pour transférer des données vers des nouvelles versions de PostgreSQL™, la sortie de pg_dump devra pouvoir se charger dans les versions du serveur PostgreSQL™ plus récentes que la version de pg_dump. pg_dump peut aussi extraire des données de serveurs PostgreSQL™ plus anciens que sa propre version. (À l'heure actuelle, les versions de serveurs supportées vont jusqu'à la 8.0.) Toutefois, pg_dump ne peut pas réaliser d'extraction de serveurs PostgreSQL™ plus récents que sa propre version majeure ; il refusera même d'essayer, plutôt que de risquer de fournir une extraction invalide. Par ailleurs, il n'est pas garanti que la sortie de pg_dump puisse être chargée dans un serveur d'une version majeure plus ancienne  -- pas même si l'extraction a été faite à partir d'un serveur dans cette version. Charger un fichier d'extraction dans un serveur de version plus ancienne pourra requérir une édition manuelle du fichier pour supprimer les syntaxe incomprises de l'ancien serveur. L'utilisation de l'option --quote-all-identifiers est recommendée lors de l'utilisation avec des versions différentes, car cela permet d'empêcher la venue de problèmes provenant de listes de mots clés dans différentes versions de PostgreSQL™.

#29 Re : Général » Conversion d'une chaine numérique vers un type oid » 29/04/2020 08:14:46

Vous pouvez essayer:

# select to_number('123456','999999')::int::oid;
 to_number 
-----------
    123456
(1 row)

#30 Re : Réplication » Replication de base de données Postgres entre maitre et esclave » 22/04/2020 18:57:22

Il y a 2 questions dans votre message:
- comment créer un serveur PostgreSQL répliqué sous Windows: c'est censé fonctionner comme sur Linux à part les spécificités Windows (syntaxe des noms de fichiers, service Windows pour l'instance/cluster)
- comment synchroniser les documents numérisés en dehors de la base: je ne sais pas si PostgreSQL sait faire ? En général on utilise des outils simples comme robocopy sur Windows ou rsync sur Linux ou des outils plus complexes comme DFS sur Windows ou DRBD sur Linux.
Que voulez-vous savoir en détail  ?

#31 Re : Migration » Migration PostreSQL 10.5 vers 11.7 » 16/04/2020 13:17:13

Je ne sais pas précisément quel type de compte il faut utiliser pour le service PostgreSQL et les droits précis qu'il faut lui donner: je n'ai pas trouvé d'information précise à ce niveau.
La documentation la plus complète que j'ai trouvée est la suivante pour l'installlateur EntrepriseDB et la version 10:
https://get.enterprisedb.com/docs/Postg … de_v10.pdf

Mais j'ai utilisé cet installateur et contrairement à ce qui est indiqué il n'a pas créé de compte postgres pour le service Windows.

#32 Re : Migration » Migration PostreSQL 10.5 vers 11.7 » 16/04/2020 11:54:30

Bonjour,

Essayez de donner tous les droits à l'utilisateur 'NETWORK SERVICE' sur le répertoire DATA.

#33 Re : Migration » Migration PostreSQL 10.5 vers 11.7 » 15/04/2020 22:12:51

Permission denied: c'est un problème de droits d'accès.

Il faut vérifier que le compte du service Windows PostgreSQL a bien les droits de lectue et d'écriture dans PGDATA.

Le service Windows doit s'appeller postgresql-x64-11. PGDATA est par défaut C:\Program Files\PostgreSQL\11\data.

J'ai une installation locale de PG 10 sur Windows 2016 (mais sans Active Directory). J'ai utilisé le compte administrateur local et le service Windows s'exécute avec le compte "Network Service".

#34 Re : Général » Mise à jour BD postgres depuis QGIS » 10/04/2020 14:07:03

Pour vous aider, il  faut avoir la description complète des tables concernées, la correspondance entre les colonnes et un exemple de MAJ: quand est-ce qu'il faut la faire et quand est-ce qu'il ne faut pas la faire.

#35 Re : Général » Mise à jour BD postgres depuis QGIS » 10/04/2020 13:13:11

Est-ce que cette requête donne le résultat demandé ?

insert into test_importb 
 select test_import.* 
 from test_import, test_importb 
 where test_importb.id_metier_<>test_import.id_metier_;

#36 Re : Général » Haute disponibilité , quelle solution choisir ? » 06/04/2020 18:18:10

D'après le support de formation Dalibo (les outils de réplication):

L’outil repmgr3 de 2ndQuadrant permet la gestion de la haute disponibilité avec notamment la gestion des opérations de clonage, de promotion d’une instance en primaire et lad émotion d’une instance.L’outil repmgr peut également être en charge de la promotion automatique du nœud secondaire en cas de panne du nœud primaire, cela implique la mise en place d’un serveur supplémentaire par cluster HA (paire primaire/secondaire) appelé témoin (witness). Cette machine héberge une instance PostgreSQL dédiée au processus daemon repmgrd, processus responsable d’effectuer les contrôles d’accès réguliers à l’instance primaire et de promouvoir le nœud secondaire lorsqu’une panne est détectée et confirmée suite à plusieurs tentatives échouées consécutives.Afin de faciliter la bascule du trafic sur l’instance secondaire en cas de panne du primaire,l’utilisation d’une adresse IP virtuelle (VIP) est requise. Les applications clientes (hors administration) doivent se connecter directement à la VIP.


Ce concept de  témoin est un concept général souvent utilisé dans les systèmes de haute-disponibilité.

#37 Re : Général » Modification Checkpoint_segments ? » 31/03/2020 16:55:03

Positionner log_checkpoints à on va uniquement ajouter des traces détaillées de l'activité des checkpoints dans le log (càd le journal des messages) de l'instance PostgreSQL: cela doit être tout à fait négligeable par rapport  aux volumes de WAL écrits pendant la MAJ: il n'y a pas d'inquiétude à avoir que ce soit pour la charge processeur, la mémoire ou les disques.

#38 Re : Général » Modification Checkpoint_segments ? » 31/03/2020 15:46:49

Est-ce que vous avez des traces détaillées des checkpoints avec log_checkpoints=on ? Si oui, pouvez-vous les partager ?
Est-ce que vous avez une estimation du volume de WAL générés pendant la mise à jour et la durée de la mise à jour ?

En 9.3 Les paramètres checkpoint_xxx sont tous statiques et nécessitent un arrêt/relance. Si vous les modifiez et si log_checkpoints est à off, pensez aussi à mettre  log_checkpoints à on.
En général on peut modifier checkpoint_segments et checkpoint_completion_target ensemble: vous pouvez augmenter checkpoint_segments à 10 ou 20 et checkpoint_completion_target à 0,9 pour lisser davantage les écritures.

#39 Re : Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 25/03/2020 11:44:37

Oui le fichier peut être supprimé selon les règles définies (pour CentOS 7) dans:

       /etc/tmpfiles.d/*.conf
       /run/tmpfiles.d/*.conf
       /usr/lib/tmpfiles.d/*.conf

Cela ne doit pas donc être aléatoire (même s'il y a beaucoup de règles) et ne doit pas empêcher d'utiliser /tmp pour stocker un fichier temporaire avant de le transférer sur une autre machine.

#40 Re : Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 25/03/2020 11:13:15

Si vous avez de la place dans /tmp vous pouvez aussi essayer:

\copy (SELECT * FROM maTable) TO '/tmp/export.sql' DELIMITER ',' CSV;

#41 Re : Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 25/03/2020 11:09:43

Est-ce que que le compte Linux qui lance psql a bien le droit d'écrire dans le répertoire courant ? Si c'est le cas ça doit fonctionner pour avoir le fichier sur Linux.

#42 Re : Général » Agrégat sur des intervals » 23/03/2020 18:39:33

Pas mieux:

set datestyle='dmy';
SET
with cte as
( 
 select justify_interval(('23-03-2020 16:00'::timestamp - '19-01-2020 06:30'::timestamp) 
                       + ('19-03-2020 06:30'::timestamp - '15-01-2020 06:30'::timestamp))
 as intervalle 
)
select 
extract(year from intervalle)      || ' an(s) '    ||
extract(month from intervalle)     || ' mois(s) '  || 
extract(days from intervalle)      || ' jours(s) ' || 
extract(hours from intervalle)	   || ':'          || 
extract(minutes from intervalle) as durée
from cte;
               durée               
-----------------------------------
 0 an(s) 4 mois(s) 8 jours(s) 9:30
(1 ligne)

select 
to_char(justify_interval( ('23-03-2020 16:00'::timestamp - '19-01-2020 06:30'::timestamp)
+                         ('19-03-2020 06:29'::timestamp - '15-01-2020 06:30'::timestamp)),
'y "ans" mm "mois" DD "jour(s)" HH "heure(s)" MI "min"' ) as durée;
                    durée                    
---------------------------------------------
 0 ans 04 mois 08 jour(s) 09 heure(s) 29 min
(1 ligne)

#43 Re : Général » Agrégat sur des intervals » 23/03/2020 17:38:34

Essayez avec JUSTIFY_HOURS:

postgres=# select ('23-03-2020 16:00'::timestamp - '19-03-2020 06:30'::timestamp) +
postgres-# ('19-03-2020 06:29'::timestamp - '15-03-2020 06:30'::timestamp);
    ?column?     
-----------------
 7 days 33:29:00
(1 ligne)
postgres=# select justify_hours(('23-03-2020 16:00'::timestamp - '19-03-2020 06:30'::timestamp) +
('19-03-2020 06:29'::timestamp - '15-03-2020 06:30'::timestamp));
  justify_hours  
-----------------
 8 days 09:29:00
(1 ligne)

postgres=# 

#44 Re : Général » Agrégat sur des intervals » 23/03/2020 17:30:04

Je n'arrive pas à reproduire le résultat ni avec PG 12.2 ni avec PG 9.4.26:

postgres=# select '23-03-2020 16:00'::timestamp - '15-03-2020 06:30'::timestamp;
    ?column?     
-----------------
 8 days 09:30:00
(1 ligne)

Que donne le résultat de ma requête dans votre environnement ?
Quelle est votre version ?


Je n'arrive pas non plus à passer en français même avec le paramétrage suivant:

postgres=# set datestyle to 'DMY';
SET
postgres=# set lc_messages='fr_FR.UTF-8';
SET
postgres=# set lc_time='fr_FR.UTF-8';
SET
postgres=# select '23-03-2020 16:00'::timestamp - '15-03-2020 06:30'::timestamp;
    ?column?     
-----------------
 8 days 09:30:00
(1 ligne)

postgres=# 

#45 Re : Général » Administration base Postgresql via SSH » 17/03/2020 21:30:00

J'ai fait des tests avec PostgreSQL 10.12 sur Windows 2016, j'ai créé un script SQL avec notepad.exe.
Que le script soit sauvegardé en ANSI ou UTF-8 ne semble influer ni sur l'affichage ni sur le stockage d'une chaîne de caractères avec un caractère accentué.

Mon script en entrée:

select version();
\encoding
show client_encoding;
\l demo
\d t
truncate t;
insert into t values('Côte');
select * from t;

Résultat

select version();
                           version
-------------------------------------------------------------
 PostgreSQL 10.12, compiled by Visual C++ build 1800, 64-bit
(1 ligne)


WIN1252
show client_encoding;
 client_encoding
-----------------
 WIN1252
(1 ligne)


                                Liste des bases de données
 Nom  | Propriétaire | Encodage |  Collationnement   |    Type caract.    | Droits d'accès
------+--------------+----------+--------------------+--------------------+----------------
 demo | postgres     | UTF8     | French_France.1252 | French_France.1252 |
(1 ligne)


                    Table « public.t »
 Colonne | Type | Collationnement | NULL-able | Par défaut
---------+------+-----------------+-----------+------------
 c       | text |                 |           |


truncate t;
TRUNCATE TABLE
insert into t values('Côte');
INSERT 0 1
select * from t;
  c
------
 Côte
(1 ligne)

#46 Re : Général » Administration base Postgresql via SSH » 17/03/2020 19:21:41

Remarque générale qui n'explique pas le problème précis qu'on a: au début de la discussion vous avez dit que vous prévoyez d'avoir une base sur Linux et vous développez avec une base Windows. Si vous utilisez la même version de PostgreSQL vous devez avoir en général le même comportement de la base mais pas sur certaines fonctionnalités liées aux jeux de caractères car PostgreSQL peut avoir un comportement différent liés aux paramètres de création de la base qui ne sont pas les mêmes sur Windows et Linux. Ainsi si je crée une base sur Linux avec PG 10.12 j'ai par défaut:

postgres=# create database demo;
CREATE DATABASE
postgres=# \l demo;
                             List of databases
 Name |  Owner   | Encoding |   Collate   |    Ctype    | Access privileges 
------+----------+----------+-------------+-------------+-------------------
 demo | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(1 row)

postgres=# 

Je constate que le paramètres LC_COLLATE et LC_CTYPE sont différents avec Windows: ce qui peut entraîner des comportements différents, par exemple dans le tri de chaînes de caractères.

#47 Re : Général » Administration base Postgresql via SSH » 17/03/2020 18:33:27

Le paramètrage jeu de caractère côté client Windows et côté serveur PostgreSQL me semblent corrects.
Reste la piste de l'encodage du script sur Windows et peut-être autre chose que je ne vois pas.

#48 Re : Général » Administration base Postgresql via SSH » 17/03/2020 18:29:02

jmarsac a écrit :
LECARROU a écrit :

j'ai modifier runpsql.bat et je n'ai plus l'avertissement au lancement de psql (cool)

si je fait

INSERT INTO adm_pay (pay_nom_eng,pay_nom_fra,pay_abr) VALUES ('Ivory Coast','Côte d Ivoire','CIV');

directement dans la console pslq pas de problème, il m'insère correctement les accents

mais si je lance le script depuis la console : \i 'D:/Users/jl3/intensetbm_test/intensetbm-etool/script2.txt' toujours un problème sur les accents...

Il faut vérifier/corriger l'encodage du fichier .txt contenant le script (D:/Users/jl3/intensetbm_test/intensetbm-etool/script2.txt par exemple)

OK mais comment fait-on avec Windows ?

#49 Re : Général » Administration base Postgresql via SSH » 17/03/2020 18:27:46

Désolé il manquait un ';' pour la commande "show client_encoding'

\encoding
show client_encoding;
\l intensetbm
INSERT INTO adm_pay (pay_nom_eng,pay_nom_fra,pay_abr) VALUES ('Ivory Coast','Côte d Ivoire','CIV');
select * from_adm_pay where pay_abr='CIV';

#50 Re : Général » Administration base Postgresql via SSH » 17/03/2020 18:03:11

Pouvez-vous nous donner la sortie complète  du script suivant exécuté dans le même environnement que script2.txt:

\encoding
show client_encoding
\l intensetbm
INSERT INTO adm_pay (pay_nom_eng,pay_nom_fra,pay_abr) VALUES ('Ivory Coast','Côte d Ivoire','CIV');
select * from_adm_pay where pay_abr='CIV';

Pied de page des forums

Propulsé par FluxBB