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 pgAdmin4 » pgadmin erreur 500 » 16/12/2021 16:38:39

caius
Réponses : 1

Bonjour,

j'aurais besoin de vos conseils sur l'accès à pgadmin.
Tout fonctionnait parfaitement bien et l'accès à pgadmin4 se faisait sans problème mais actuellement je rencontre une erreur 500.
le log indique :

[Thu Dec 16 15:25:32.696573 2021]   mod_wsgi (pid=20991): Target WSGI script '/usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi' cannot be loaded as Python module.
[Thu Dec 16 15:25:32.696607 2021]   mod_wsgi (pid=20991): Exception occurred processing WSGI script '/usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi'.
[Thu Dec 16 15:25:32.696622 2021]   Traceback (most recent call last):
[Thu Dec 16 15:25:32.696636 2021]     File "/usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi", line 36, in <module>
[Thu Dec 16 15:25:32.696655 2021]  from pgAdmin4 import app as application
[Thu Dec 16 15:25:32.696660 2021]     File "/usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.py", line 70, in <module>
[Thu Dec 16 15:25:32.696667 2021]  app = create_app()
[Thu Dec 16 15:25:32.696672 2021]     File "/usr/lib/python2.7/site-packages/pgadmin4-web/pgadmin/__init__.py", line 229, in create_app
[Thu Dec 16 15:25:32.696680 2021]  fh = logging.FileHandler(config.LOG_FILE, encoding='utf-8')
[Thu Dec 16 15:25:32.696684 2021]     File "/usr/lib64/python2.7/logging/__init__.py", line 902, in __init__
[Thu Dec 16 15:25:32.696693 2021]  StreamHandler.__init__(self, self._open())
[Thu Dec 16 15:25:32.696704 2021]     File "/usr/lib64/python2.7/logging/__init__.py", line 927, in _open
[Thu Dec 16 15:25:32.696711 2021]  stream = codecs.open(self.baseFilename, self.mode, self.encoding)
[Thu Dec 16 15:25:32.696714 2021]     File "/usr/lib64/python2.7/codecs.py", line 881, in open
[Thu Dec 16 15:25:32.696721 2021]  file = __builtin__.open(filename, mode, buffering)
[Thu Dec 16 15:25:32.696745 2021]   IOError: [Errno 13] Permission denied: '/var/log/pgadmin/pgadmin4.log'

à vrai dire je suis un peu perdue dans ce que je dois faire, pourriez-vous m'éclairer ?

Merci d'avance

#2 Re : Installation » mise à jour vesion 10.6 vers 10.12 » 21/02/2020 15:31:34

Bonjour Pifor,

merci de votre réponse.
Je pensais passer par yum pour récupérer le paquet et l'installer (il semblerait qu'il gère mieux les dépendance que RPM). Comme cela va être effectif sur notre 3 instances (y compris la prod) j'avais peur des répercussions mais étant donnée qu'il s'agit bien d'une version mineur elle es donc compatible et ne touche pas au structure des tables (de ce que j'ai vu dans la release note)

je n'ai encore jamais fait d'évolution de version sur postgres, y-a-t'il une vérification particulière à effectuer ou les standards suffisent ?

Merci d'avance

Cordialement

#3 Installation » mise à jour vesion 10.6 vers 10.12 » 21/02/2020 10:43:57

caius
Réponses : 3

Bonjour,

nous avons une installation de postgresql en version 10.6 (serveur redhat) et nous devons passer en version 10.12 pour raison de sécurité.
J'aurais voulu avoir quelques renseignements avant : si j'ai bien compris les informations de versioning la 10.12 est une mise à jour mineur. est-ce bien le cas ?!
Est-il possible de passer de la 10.6 à celle-ci directement ou faut-il passer les intermédiaires ? question bête sûrement mais je préfère en être sûre et ne pas avoir de mauvaise surprise derrière..
pg_upgrade est surtout & utiliser pour les version majeurs, quel est la meilleur façon de procéder pour installer une version mineur ?

pour information nous possédons 3 instances plus un client oracle pour l'extension oracle_fdw : cela ne va en rien toucher cette extension ?

Merci d'avance pour vos réponses

#4 Re : Général » enregistrer sortie de pg_restore » 31/01/2020 15:15:28

Bonjour à tous les deux,

merci beaucoup pour votre réponse !
et effectivement ça fonctionne parfaitement

Merci

#5 Général » enregistrer sortie de pg_restore » 31/01/2020 10:47:40

caius
Réponses : 3

Bonjour,

j'ai une question bête : je voudrais sauvegarder la sortie d'un pg_restore vers un ficheir de log mais je n'y arrive pas...
'jai essayé avec ça :

pg_restore -d test -p 5433 -U postgres -c -v --file=restore_test_schemas_2020_01_30-1717.log -n bob -n dev_bob  export_applit_schemas.tar

mais aussi simplement ça :

pg_restore -d test -p 5433 -U postgres -c -v -n bob-n dev_bob export_testt_schemas_2020_01_30-1717.tar > restore_applit_schemas.log

Or, la première me dit qu'il n'est pas possible d'utilier l'option -f avec -d.

Comment faire donc s'il vous plait ?
Merci d'avance

Cordialement

#6 Re : Installation » out of shared memory » 24/10/2019 11:41:22

Bonjour,

merci pour votre réponse !
oui oui j'ai bien redémarré le service à chaque modification.
Existe-t-il une valeur à ne pas dépasser, au regard des autres paramètres ? si j'augmente la valeur du max_locks_per_transaction , dois-je modifier d'autre paramètres ?

je suis un peu perdue dans la doc par rapport à tout ce paramétrage...

Merci

#7 Installation » out of shared memory » 24/10/2019 11:00:38

caius
Réponses : 3

Bonjour,

je rencontre un problème pour paramétrer mon fichier de conf postgres (version 10.6).

j'ai une grosse procédure de transaction qui me déclenche une erreur

ERROR:  out of shared memory
HINT:  You might need to increase max_locks_per_transaction."

j'ai paramétré comme ceci mon fichier postgresql.conf :

shared_buffers = 3GB
dynamic_shared_memory_type = posix
max_wal_size = 1GB
max_locks_per_transaction = 100

comment pusi-je changer ? est-ce que j'ai paramétré les bonnes informations ? en ai-je oublié d'autre ?

il faut savoir que j'ai 3 instances postgres qui sont installées sur le serveur qui possède un disque de 5Go et la mémoire est de 8Go. IL va falloir que les 3 instances soient opérationnelles et partagent tout ceci.

merci pour vos lumières !

#8 Général » pg_restore bloqué avec extension plpgsql » 16/05/2019 14:23:34

caius
Réponses : 1

Bonjour,

je rencontre un problème pour restaurer une base de données avec pgadmin4. J'utilise les seules options --clean et --single-transaction sur un fichier dump :

/usr/pgsql-10/bin/pg_restore --host "localhost" --port "5432" --username "postgres" --no-password --role "postgres" --dbname "applip" --clean --single-transaction --verbose "/var/lib/pgadmin/storage/script_modification/applip_2019-05-14_11-07-02.dump"

mais je rencontre tout le temps la même erreur :

pg_restore: dropping COMMENT EXTENSION plpgsql
pg_restore: dropping EXTENSION plpgsql
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 1; 3079 13794 EXTENSION plpgsql
pg_restore: [archiver (db)] could not execute query: ERROR:  cannot drop extension plpgsql because other objects depend on it
DETAIL:  function schema.create_batiment(character varying,numeric,character varying,character varying,character varying,character varying) depends on language plpgsql
...

j'ai une instance postgres test sur laquelle j'arrive sans problème à restaurer mes bases mais là je ne comprends pas pourquoi l'extension plpgsql me bloque...
Que dois-je changer ?

merci d'avance

#9 Re : PL/pgSQL » shell commande \copy sans être superuser » 06/05/2019 09:36:16

Bonjour,

désolé pour le retard. Merci beaucoup pour votre réponse c'est exactement ce qu'il me fallait !
Merci

#10 Re : PL/pgSQL » shell commande \copy sans être superuser » 29/04/2019 16:16:42

la revoici :

DECLARE
      contenu text;
      temp_import_file text;
	
    BEGIN
      fichier := fichier;
	  temp_import_file := quote_ident('temp_import_file'); 
	  
	  -- création d'une table temporaire 
	  EXECUTE format('CREATE TEMP TABLE %I (contenu text)', temp_import_file);
	
	  --recopie du contenu du fichier dans la table temporaire
	  EXECUTE format('COPY %I FROM %L ',temp_import_file, fichier);
	  
	  --recupère le contenu de la table temp et l'ajoute à la variable 'contenu'
	  EXECUTE format('SELECT contenu FROM %I ', temp_import_file)INTO contenu;
	  
	  --supprime la table temp
	  EXECUTE format('drop table %I', temp_import_file);
	 
	  -- retourne le contenu de la variable
      RETURN contenu;
    END;

je ne récupère que la 1ere ligne de mon fichier. Je suis désolé avec toutes mes questions mais je débute en postgres...

#11 Re : PL/pgSQL » shell commande \copy sans être superuser » 29/04/2019 14:55:08

Bon alors effectivement il fallait préfixer pour le 1er bug mais pour le second je ne trouve pas.
en fait j'ai un fichier qui contient :

MIME-Version: 1.0
Content-Type: text/html
Content-Disposition: inline
<html>
<head>
<style>.bat{margin-left:15px;color:#00BFFF} .eta{margin-left:50px;color:#9A2EFE} .pie{margin-left:75px;color:#FE9A2E}</style>
</head>
<body><p>Bonjour !</p><br/><pre><div class="evrp_container">

tout ce que je veux faire c'est l'afficher pour commencer à partir de la fonction que j'essaie de créer mais voilà il ne me retour seulement la 1ère ligne.
J'utilise sûrement mal COPY mais comment je dois faire pour récupérer tout le contenu du fichier et l’insérer dans un champ de ma table de type text pour le retourner par la suite ?

Merci de votre aide

#12 Re : PL/pgSQL » shell commande \copy sans être superuser » 29/04/2019 10:36:07

Bonjour et merci pour vos réponses.
Effectivement, j'ai dû mal m'y prendre en créant la fonction puisque je l'avais précédemment supprimé de l'utilisateur avant de la recréer avec postgres.
Cependant, il y a un truc que je comprend pas. Quand je l'utilise dans pgadmin, il me sort une erreur :

ERROR: function pg_file_read(unknown) does not exist 
LINE 1: select pg_file_read('import_test/output.html')
                    ^
 HINT: No function matches the given name and argument types. You might need to add explicit type casts.
 État SQL :42883

alors que lorsque je l'appelle via le shell cela fonctionne même si je rencontre d'autres erreurs :
si j'enregistre dans une variable le fichier que je souhaite ouvrir de cette façon :

 fichier := fichier; 

alors j'obtiens

ERROR:  extra data after last expected column
CONTEXT:  COPY temp_import_file, line 1: "1200917      C801_03 0       ANCIENNE DOCUMENTATION DU PETI  C8_03 DIGNE LES BAINS BOULEVARD SAINT..."
SQL statement "COPY temp_import_file FROM 'import_test/test_sortie_fich.html'"
PL/pgSQL function dev_evrp.pg_file_read(text) line 13 at EXECUTE

mais si je l'encapsule dans quote-literal ou quote-nullable, alors il me dit que le fichier n'existe pas...
que dois-je faire ?

merci d'avance

#13 Re : PL/pgSQL » shell commande \copy sans être superuser » 26/04/2019 16:08:05

Bon alors...
j'ai modifié ma fonction :

CREATE OR REPLACE FUNCTION dev_evp.pg_file_read(fichier text)
    RETURNS text
    LANGUAGE 'plpgsql'
    VOLATILE SECURITY DEFINER
    PARALLEL UNSAFE
    COST 100
AS $BODY$    DECLARE
      contenu text;
      temp_import_file text;
	
    BEGIN
      fichier := quote_nullable(fichier);
	  temp_import_file := quote_ident(temp_import_file); 
	  
	  -- création d'uen table temporaire 
	  EXECUTE format('CREATE TEMP TABLE %I (contenu text)', 'temp_import_file');
	  
	  --recopie du contenu du fichier dans la table temporaire
	  EXECUTE format('copy %I FROM %L DELIMITER " " ', 'temp_import_file', fichier);
	  
	  --recupère le contenu de la table temp et l'ajoute à la variable 'contenu'
	  EXECUTE format('SELECT contenu FROM %I INTO %L', 'temp_import_file', contenu);
	  
	  --supprime la table temp
	  EXECUTE format('drop table %I', 'temp_import_file');
	 
	  -- retourne le contenu de la variable
      RETURN contenu;
    END;
  $BODY$;

l'option security definer si j'ai bien compris, permet d’exécuter la fonction avec les droits de l'utilisateur propriétaire. je l'ai donc crée en tant qu'utilisateur postgres. sauf que lorsque je l'appelle en tant qu'utilisateur toto, cela me dit toujours que je dois être superuser pour lire le fichier..

Je dois modifier autre chose ?
j'ai accordé les droits "execute" à postgres et à toto dans l'onglet sécurité de la fonction sur pgadmin.

merci de votre aide

#14 Re : PL/pgSQL » shell commande \copy sans être superuser » 26/04/2019 14:51:51

Bonjour et merci pour vos réponses, désolé du retard je n'ai pas pu répondre avant.
Malheureusement je susi en version 10 de postgres et à ce que je vois il n'y a pas le pg_read_server_file.
Je vais voir ce security definer du coup !

#15 PL/pgSQL » shell commande \copy sans être superuser » 25/04/2019 11:43:03

caius
Réponses : 14

Bonjour,

je suis en train de créer une fonction permettant de lire un fichier (via une doc trouvée sur le net). Cette fonction doit être utilisée par un utilisateur de ma bdd qui n'est pas superuser, par ex toto.
La commande COPY ne le permettant pas j'ai utilisé \copy dans ma procédure  :

DECLARE
      contenu text;
      temp_import_file text;
	
    BEGIN
         fichier := quote_nullable(fichier_lect); -- fichier_lect étant le paramètre passé à la fonction
	  temp_import_file := quote_ident(temp_import_abyla); 
	  
	  -- création d'uen table temporaire 
	  EXECUTE format('CREATE TEMP TABLE %I (contenu text)', 'temp_import_file');
	  
	  --recopie du contenu du fichier dans la table temporaire
	  EXECUTE format('\copy %I FROM %L DELIMITER " " ', 'temp_import_file', fichier);
	  
	  --recupère le contenu de la table temp et l'ajoute à la variable 'contenu'
	  EXECUTE format('SELECT contenu FROM %I INTO %L', 'temp_import_file', contenu);
	  
	  --supprime la table temp
	  EXECUTE format('drop table %I', 'temp_import_file');
	 
	  -- retourne le contenu de la variable
      RETURN contenu;
    END;

lorsque j'appelle cette fonction (en étant connecté avec l'utilisateur toto) avec un tout simple

 select pg_read_file('path/to/mon/fichier')

j'obtiens le message suivant : "must be superuser to read files". pourtant il me semble que la commande \copy peut être utilisé par tous les utilisateurs..

c'est quoi mon problème dans ce cas ?

Merci pour vos lumières smile !!

#16 Re : PL/pgSQL » relation curseur n'existe pas » 23/04/2019 10:53:32

Bon  alors le problème venait de ma boucle for qui suivait :

FOR l_batiment IN batiment_cur LOOP

où l_batiment était une variable déclarée, ce qu'il ne faut pas.

#17 PL/pgSQL » relation curseur n'existe pas » 23/04/2019 10:12:35

caius
Réponses : 1

Bonjour tout le monde,

alors ma question peut paraitre bête (désolé si c'est le cas) mais je ne comprends pas. j'essaie de convertir une procédure oracle en fonction postgres.
J'ai un curseur :

CREATE or REPLACE FUNCTION import_piece_fichier(p_file_name character varying) returns void
LANGUAGE 'plpgsql'
AS $$
DECLARE
	batiment_cur CURSOR FOR SELECT * FROM dev_tool.rs_batiment ORDER BY num_comp;
        ...
        ...

mais je récupère l'erreur suivante

ERROR: relation "batiment_cur" does not exist
CONTEXT: compilation of PL/pgSQL function "import_piece_fichier" near line 4
État SQL :42P01

Je précise pour information que ma table rs_batiment, est une table distance (venant d'une base oracle) et que j'importe via le wrapper oracle_fdw. Lorsque je fais un simple select * sur cette table, je récupère bien les informations.
Pourquoi mon curseur reste indéfini ? Il me semble que je le déclare de la bonne façon pourtant... où ai-je fait une erreur svp ?

Merci d'avance smile

#18 Re : Général » pb installation oracle_fdw sous Redhat 7 » 15/04/2019 11:05:35

Bonjour,
je me permet de vous contacter sur votre ticket : comment avez-vous fait pour installer oracle_fdw ?

Merci d'avance

#19 Re : ODBC » dblink postgres vers oracle 11 » 11/04/2019 17:02:25

Bonjour,
merci pour ton retour. Il me semble que c'est une extension qui fait partie d'un package. je suis entrain de chercher et installer pour faire les tests.

La bise

#20 ODBC » dblink postgres vers oracle 11 » 10/04/2019 16:56:35

caius
Réponses : 2

Bonjour,

j'ai besoin de connecter une base de données sous postgres 10 sur un serveur redhat à une autre sous oracle 11 sur un serveur distant. Si j'ai bien compris, il faut que j'installe 2 drivers ? psqlodbc et unixodbc ?
avez-vous déjà procédé à son installation sur un serveur redhat ? savez-vous où trouver ces drivers ?
par la suite, comment créer un dblink entre mes bases ?

merci pour votre aide.

Cordialement

#21 Re : PHP » pg_connecte ne retourne rien » 08/04/2019 10:22:40

Ok c'est noté,
merci beaucoup pour ton explication !

#22 Re : PHP » pg_connecte ne retourne rien » 05/04/2019 14:12:51

Merci pour votre retour,
en fait il me manquait des extensions. postgres était bien installé mais pas complètement.

Merci !

#23 PHP » pg_connecte ne retourne rien » 05/04/2019 08:23:31

caius
Réponses : 4

Bonjour,

je suis nouvelle utilisatrice de postgreSQL 10 et là j'essaie d'accéder à ma base avec un select tout simple via php. Je ne comprend pas pourquoi ma connexion ne se fait pas.
Le fichier php sur se trouve sur un autre serveur que celui où est installé postgres mais j'ai bien entré l'autorisation dans le fichier pg_hba de mon instance avec

host    all             all             xxx.xxx.xxx.xx/32       md5  (les x sont remplacés par la vraie ip)

Je n'ai aucun retour dans les log de l'instance, du coup je ne sais pas pourquoi cela ne fonctionne pas. J'ai essayé ceci :

$conn= pg_connect( "host=$sid_post port=$port dbname=$base_postgres user=$user_postgres password=$pass_postgres");
if (!$conn){
    print pg_last_error($conn);
    echo "error connection";
} else {
    echo 'everything was ok';
}

mais rien de rien ne s'affiche.

Pourriez-vous me dire ce qui cloche et ce que j'ai oublié de faire por que cela fonctionne svp ?
J'avais aussi pensé à utiliser PDO pour PDOexception mais il me manque le driver. Mais avant cela j'aimerai bien comprendre pourquoi cela ne marche pas avec une simple requête de connexion.

Merci pour votre aide

#24 Re : Installation » impossible relancer servuer postgres avec systemctl » 08/03/2019 17:54:54

et oui... avec le masque /32 cela marche beaucoup mieux d'un coup !

vraiment merci à vous deux !

#25 Re : Installation » impossible relancer servuer postgres avec systemctl » 08/03/2019 17:30:56

bonjour,

j'ai rajouté la ligne dans ipv4 :

# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
host    base_f          dude            10.134.2.200            md5

effectivement quand j'enlève ce que j'ai ajouté (la 2ème ligne) ça fonctionne... pourriez-vous me dire ce que je fais mal dans le paramétrage de cette ligne svp ?

Pied de page des forums

Propulsé par FluxBB