Vous n'êtes pas identifié(e).
On démarre le serveur en cliquant sur le mot Postgresql 14 dans la fenêtre de l'Admin 4. Donc non il ne démarre pas puisqu'il y a la croix rouge après que j'ai entré le mot de passe.
Donc je fais quoi ? Je modifie le mot de passe ou c'est le serveur qui pose problème ?
Sinon je désinstalle PGS 14 et le réinstalle ? Merci
Bonjour Rjuju,
De quel mot de passe s'agit-t-il exactement ?
Lorsqu'on installe PGS, il est demandé de définir un mot de passe donc c'est celui-là. Selon vos explications, ce serait le mot de passe pour se connecter au serveur.
Si j'ai fait une erreur de frappe lorsque je l'ai défini, on peut modifier le mot de passe via hba_conf...
Mais si le mot de passe est correct, donc qu'est-ce ?
J'ai écrit le même mot pour le master password.
Il faudrait chercher les logs d'installation
J'ai retrouvé le message qui est "Echec lors du chargement..." Je ne sais pas si c'est intéressant mais je mets les lignes précédentes :
Script stderr:
psql: erreur : la connexion au serveur sur « localhost » (::1), port 5432 a échoué : Connection refused (0x0000274D/10061)
Le serveur est-il actif sur cet hôte et accepte-t-il les connexions ?
la connexion au serveur sur « localhost » (127.0.0.1), port 5432 a échoué : Connection refused (0x0000274D/10061)
Le serveur est-il actif sur cet hôte et accepte-t-il les connexions ?Échec lors du chargement des modules SQL dans le cluster de bases de données.
Je ne sais pas si ça a un lien mais lancer PgAdmin 4 débouche sur une erreur et il ne s'ouvre pas. Je dois relancer à nouveau PgAdmin. Il accepte de s'ouvrir soit à la 2ème ou +. Merci.
Bonjour,
Je viens d'installer PGS 14. Au lancement de Admin 4, il est demandé un master password :
Please enter your master password.
This is required to unlock saved passwords and reconnect to the database server(s)
Password
Deux boutons : image poubelle, et un "reset master password" puis deux boutons "cancel" et "ok"
Je rentre le mot de passe défini lors de l'installation de PGS. Ca marche.
Je viens de lire sur la docu de l'Admin 4, qu'à la 1ère utilisation de l'Admin, c'est "Please SET the master password...". Si c'est le cas, j'ai entré le mot de passe donc qui s'est "SET".
Puis, à gauche de l'écran, je clique sur le "Servers (1)" et sur "Postgresql 14". Là, il m'est demandé encore un mot de passe :
please enter the password for the user "[nom user]" to connect to the server Postgresql 14
J'entre le même mot de passe puisque j'en ai qu'un seul... Cela prend un certain temps puis la croix rouge apparaît à nouveau sur le serveur "Postgresql 14", ce qui signifie qu'il reste fermé donc que le mot de passe a été rejeté.
Que se passe-t-il ??? Rien trouvé pour le moment. Merci...
J'espère qu'en définissant le mot de passe lors de l'installation je n'ai pas tapé trop vite sur le clavier et n'aurais pas fait une erreur de frappe... Ca m'étonnerait donc si vous avez la réponse au problème...
Ou est-ce que ce serait PGS14 qui n'arrive pas à démarrer ? En effet, je n'ai pas de message "Mot de passe incorrect".
Merci!
Remarque : lors de l'installation de PGS 14, vers 75% d'installation, il y a eu une fenêtre indiquant quelque chose comme "échec lors de la création de ... [?? Je ne sais pas!] SQL ...". J'ai cliqué sans même lire correctement le message.
Merci Rjuju et Gleu, vous aviez raison, c'est un problème de path vers les bin, j'ai oublié le dernier "/" du chemin en le copiant...!!!
Pour les autres points, je réponds bientôt.
Autre nouveauté : quand je lance psql, la fenêtre s'ouvre et "mot de passe :" est inscrit. Impossible d'écrire un mot de passe!!! Si je fais Entrée, la fenêtre se ferme!!! Ca sera bientôt un mauvais souvenir car je vais réinstaller PGS.
Car si j'ai bien compris, la commande pg_dump ou pg_restore se fait uniquement par psql, vu que l'écrire et la lancer dans Admin 4 ne marche pas...
Merci
Bonjour Gleu,
Oui j'ai essayé aussi, le pg_dump est dans le Bin. Le résultat est cette partie de mon message :
"Pour la petite histoire, j'ai cru qu'il fallait mettre le Path vers le dossier Programmes -> PGS 10 -> Bin. Aucun fichier backup n'est créé!! Vous savez pourquoi ? "
Hier j'ai vérifié le log. A 20h34 et à 22h07, j'ai créé un backup. Dans le log, il n'y a aucune ligne concernant cette opération. Les deux dernières lignes sont :
2022-06-09 21:08:51.423 CEST [4952] ATTENTION: worker took too long to start; canceled
2022-06-09 21:08:55.540 CEST [3500] ATTENTION: autovacuum worker started without a worker entry
C'est normal ?
Autre petite histoire : les logs sont ceux de PGS et pas de l'Admin, c'est cela ? Puisque les logs sont créés dans le dossier "10" de Postgresql (dans Programmes) et non le dossier de l'Admin. Si c'est bien le cas, j'ai tenté de créer le backup via PGS 9.6, et le dernier log créé dans le dossier pg_log de 9.6 date de 2017... En gros, les logs de 9.6 ne sont plus créés parce que j'ai les deux serveurs, 9.6 et 10.
Merci
Bonjour Rjuju,
Oui j'ai tout recopié du message d'erreur. Bien sûr c'est mon Chemin complet et mon name qui y figurent.
Binaire, c'est-à-dire ?
Nom de la table ? Vous parlez de name ?
J'ai configuré dans Admin 4 -> File -> Preferences -> Binary path : vers un de mes dossiers. Le backup .SQL est bien créé dans ce dossier mais il a une taille de 0 ko.
Pour la petite histoire, j'ai cru qu'il fallait mettre le Path vers le dossier Programmes -> PGS 10 -> Bin. Aucun fichier backup n'est créé!! Vous savez pourquoi ?
Merci
Je ne trouve rien sur internet entre ceux qui parlent de bug sur Admin4 ou de path...
Sinon je passe par exporter table par table ? Ma table n'est pas énorme, je peux me le permettre...
Mais il est vrai que je préférerai comprendre pourquoi le backup ne marche pas.
Merci
Non à priori. Les détails de l'erreur disent :
Backing up an object on the server 'PostgreSQL 10 (localhost : 5432)' from database 'NOMDB'...
--file "C:\\[chemin complet]\\DUMP_B~1.SQL" --host "localhost" --port "5432" --username "name" --no-password --verbose --format=p --encoding "UTF8" "NOMDB"
Start time: Thu Jun 09 2022 18:11:32 GMT+0200 (Paris, Madrid (heure d’été)
Status : Failed (exit code: 1)
Merci,
Bonjour,
Je veux créer une sauvegarde de ma base de données via Admin 4, avec un clic droit sur le nom de la base de données puis sélectionner Backup...
Que je crée un fichier avec l'extension .SQL ou .BACKUP, cela débouche sur un Failed (Exit Code:1)
Pourriez-vous m'aider ? Merci!
Au passage, j'avais aussi tenté d'installer une base de données issu d'un dump, au format .SQL et j'avais eu la même erreur de Failed (Exit Code:1)
Je ne sais pas si cela peut avoir un lien mais j'ai PGS 9.6 et PGS 10 d'installés.
PostGreSQL 10
Windows 10
Merci Gleu J'ai bien compris le principe du LEFT JOIN et je veux justement obtenir toutes les lignes de TABLE1 et uniquement les correspondances de TABLE2.
Par contre, l'individu 3 devrait avoir les 4 mêmes correspondances que les ont l'individu 1 et 2 dans le résultat car les ADRESSES sont identiques (pas d'espace en plus, etc. J'ai bien vérifié). Pourquoi ?
Est-ce qu'en regardant le plan de requête ou les autres processus mis en oeuvre lors du traitement d'une requête, je pourrai avoir des éléments d'explications ? Je ne sais pas comment on a accès au plan de requête et les autres processus, j'essaie de comprendre comment faire.
Pourquoi un JOIN ?
Merci
Bonjour,
Voici ma démarche :
Les données : dans TABLE1, 3 individus ont la même adresse.
Dans Table 2, l'adresse apparaît 4 fois dont 1 ligne est due à la variable pour les BIS et à une VARIABLE3, 1 ligne due à la variable BIS et une VARIABLE4, 1 ligne à une VARIABLE5.
Je veux récupérer les lignes de TABLE2 qui correspondent à l'ADRESSE de TABLE1 :
SELECT e.*, to_char(b.NUMERO '9999'), b.*
FROM MABASE.TABLE1 e LEFT OUTER JOIN MABASE.TABLE2 b ON ADRESSE = (b.NUMERO || ' ' || b.NOMVOIE) AND (e.TABLE1CP = trim(to_char(b.TABLE2CP, '99999')))
WHERE e.ADRESSE LIKE '%NOMEXEMPLE%';
Le résultat : 9 lignes : 4 lignes de TABLE2 pour 1 individu de TABLE1, 4 lignes pour le 2nd individu == résultat correct mais : 1 seule ligne pour le 3ème individu et les colonnes de TABL2 sont vides!! Pourquoi ?!
Les variables de la jointure du code ci-dessus sont identiques pour les 3 individus de TABLE1, j'ai bien vérifié.
Si vous avez des pistes, merci!
Pourquoi ne pas utiliser quelquechose comme "update matable set variable2 = case when... end where ..." ?
Merci @rjuju mais êtes-vous sûr que c'est ça ? A quoi sert WHERE alors que la condition est contenue dans WHEN ? Merci
J'ai appliqué votre proposition sans mettre WHERE et les cellules de Variable2 ont comme valeur "true" et non la valeur attendue (ABCD ou ABC)...
Finalement, en mettant cette version, les nouvelles valeurs de Variable2 sont correctes :
UPDATE MaTable SET Variable2 =
CASE WHEN Variable1 = 'ABC' THEN 'ABCD'
WHEN Variable1 = 'ABCD' THEN 'ABC'
ELSE NULL
END;
Merci
C'est pour éviter d'utiliser deux requêtes distinctes, être un peu plus efficace.
De plus, comme c'est un test, je n'ai pas mis le UPDATE mais l'objectif est de modifier la colonne Variable 2.
UPDATE MaTable SET Variable2 = 'ABCD' WHERE Variable1 = 'ABC';
Utiliser deux conditions dans un WHERE, ça je sais mais le point complexe c'est de modifier la variable2 en fonction du critère de la variable1, c'est-à-dire que Variable1 = ABC, Variable2 devient ABCD, et si Variable 1 = ABCD, Variable2 doit devenir ABC. Merci
Bonjour,
J'aimerais remplir une colonne en fonction d'une autre colonne. Il y a deux conditions à intégrer donc je ne peux pas utiliser un WHERE.
Je tente le CASE WHEN mais la variable utilisée pour la condition et la variable pour le résultat sont deux variables différentes. Mon code ne marche pas.
1/ Sauriez-vous quelle instruction utiliser ? Le Case est peut-être inadéquat. Je n'ai rien trouvé dans le tuto de PGS.
2/ Pourquoi mon code ne donne-t-il pas le résultat escompté ?
SELECT Variable1, Variable2
FROM MaTable
WHERE
(
CASE WHEN Variable 1 = 'ABC' THEN Variable 2 = 'ABCD'
WHEN Variable 1 = 'ABCD' THEN Variable 2 = 'ABC'
ELSE NULL
END );
Merci
Bonjour,
Merci, voici les éléments demandés :
Mon objectif : jointure entre TABLE1 et TABLE2. Left outer join est bon, c'est le to_char qui coince.
SELECT t1.ADRESSE, t1.CPA, t2.NOMVOIE, to_char(t2.NUMERO, '999'), to_char(t2.CPB, '99999')
FROM BASE.TABLE1 t1 LEFT OUTER JOIN BASE.TABLE2 t2 ON t1.ADRESSE = (t2.NUMERO || ' ' || t2.NOMVOIE) AND t1.CPA = to_char(t2.CPB, '99999')
ORDER BY f.ADRESSE;
Description du résultat : 5 colonnes dont les noms sont celles citées dans le SELECT (ADRESSE, CPA, etc)
ADRESSE contient toutes les lignes de TABLE1 ainsi que les CPA associées. Les colonnes associées à TABLE2 contiennent toutes la mention "[null]" càd qu'elles sont vides. Bien sûr le nom des deux colonnes avec la fonction to_char sont nommées "to_char", et type "text". Il n'y a pas de souci dans tout ça.
Le problème, comme expliqué c'est pourquoi n'ai-je pas les colonnes associées à TABLE2 remplies ?
Si je retire la 2ème partie de la condition et ne demande que :
FROM BASE.TABLE1 t1 LEFT OUTER JOIN BASE.TABLE2 t2 ON t1.ADRESSE = (t2.NUMERO || ' ' || t2.NOMVOIE)
Résultat : mêmes colonnes que la 1ère requête. Cette fois-ci, il y a bien sûr plus de 500 lignes : correct. Surtout, les colonnes NOMVOIE, NUMERO, et CPB sont remplies.
Comment faire pour faire marcher la 1ère requête. Merci
Merci rjuju. Effectivement, j'ai souvenir de l'avoir lu dans la doc mais hier je n'ai pas trouvé. Je regarderai à nouveau.
Petit souci : je compare deux CP, CPA et CPB, sur le CPB j'applique le to_char.
Dans le résultat, il n'y a pas de correspondance faite entre les CP. Alors que je sais que les deux tables ont des CP en commun. Donc pourquoi PGS refuse-t-il ?
CPA est enregistrée comme une char(8) dans ma table. J'ai fait un trim(CP) pour m'assurer qu'il n'y a pas d'espace après les 5 caractères du CP.
Lors de l'application du char_to, CPB apparaît en text dans le résultat (le type de variable est visible dans le nom de la colonne de résultat). Pourquoi n'est-ce pas une charvar ou au mieux un char(5) puisque je suppose que tous les CP sont de 5 caractères ?
Autre question : j'ai utilisé un char_to pour une autre variable numérique en l'indiquant dans le SELECT du code, afin de ne pas alourdir le "ON + condition". Dans la condition, j'ai utilisé de la variable. Mon code marche.
Par contre, si je fais la même chose avec le char_to pour le CP (donc dans le SELECT puis utilisation du CP dans la condition de la requête), PGS renvoie une erreur. Si je mets le char_to dans la condition directement, le code marche mais la colonne du résultat pour CPB est vide -> d'où les questions ci-haut.
Donc pourquoi le char_to au niveau du SELECT marche dans un cas et pas dans l'autre ?
Merci!
Bonjour,
Afin de convertir un integer en caractères, j'utilise la fonction to_char :
SELECT to_char(CP, '999') FROM MABASE.MATABLE WHERE CP = '75000';
Le résultat obtenu est une cellule contenant ###
Que se passe-t-il ? Rien n'est indiqué dans le tuto PGS. Merci
J'imagine que vous avez configuré une connexion vers deux versions différentes de postgres.
=> Oui puisque j'ai installé pgAdmin4 et PGS10. Au lancement, ils ont du demander la configuration de PGS10.
Je viens de voir que toutes les tables et les vues que j'ai créées sur le serveur PGS10 ont été créées dans PGS 9.6. Est-ce normal ?
Non, et la réponse est la même pour les autres questions : vous avez probablement effectué vos traitements sur la mauvaise connexion / mauvais onglet / mauvaise fenêtre.
J'utilise PG10 depuis les réponses ci-dessus. Créer, par exemple, une vue dans PGS10 la crée automatiquement dans PGS9.6 mais je me connecte sur le serveur PGS10 au lancement de pgAdmin4. Donc je n'utilise pas une mauvaise connexion et quand j'effectue des traitements sous PGS10, je ne suis pas connectée à PGS9.6.
Autre question : aujourd'hui, j'ai pu me connecter aux deux serveurs en même temps alors que d'habitude, sauf erreur de ma part, cliquer sur PGS9.6 alors que j'étais connectée à PGS10 demandait à se déconnecter du serveur utilisé pour accéder à l'autre...
Dois-je supprimer l'un des deux ? 9.6 je suppose puisque c'est le plus ancien ?
Ce sont vos données, c'est vous qui voyez.
D'accord mais le risque, au vu des remarques ci-dessus, si je supprimer PGS9.6, cela supprimera-t-il automatiquement les tables et vues que j'ai créées dans PGS10 ?
Merci
Le problème se trouve à priori dans votre fichier. Vous pouvez par exemple essayer de supprimer des lignes pour isoler la ou les lignes posant soucis afin de comprendre plus facilement le problème, ou exporter au même format des lignes dans la table actuelle (ou avec les mêmes colonnes) pour comparer.
Merci. Exporter au même format ?
Bonjour,
Encore une erreur de type
ERROR: ERREUR: données supplémentaires après la dernière colonne attendue
Le nombre de variables du fichier et du SQL est identique. A la fin des lignes, pas de ;. Après la dernière ligne, pas de ligne vide, je l'ai supprimé.
COPY MATABLE FROM 'monchemin\nomfichier.csv' with delimiter ';' NULL as '' CSV header;
Les valeurs des champs ne sont entre "" mais j'ai déjà chargé ce type de fichier, ça marchait. La dernière colonne contient des dates de format Year-Month-Day mais je ne pense pas que les - qui posent problème...
Où se loge l'erreur s'il vous plait ? Merci
Bonjour,
Sur PgAdmin 4, j'avais installé PostgreSQL 9.6 et PostgreSQL 10. Je viens de voir que toutes les tables et les vues que j'ai créées sur le serveur PGS10 ont été créées dans PGS 9.6. Est-ce normal ?
Du coup, je pense qu'il est possible que cela m'ait induit en erreur et qu'il m'a du arriver d'utiliser PGS 9.6 au lieu de PGS 10! Pensez-vous que tous les traitements que j'ai fais en étant sur l'une des versions du serveur ont été automatiquement faits sur l'autre en parallèle ?
Dois-je supprimer l'un des deux ? 9.6 je suppose puisque c'est le plus ancien ?
Merci d'avance.
Euh... T1 est la table de gauche donc toutes les lignes de T1 sont gardées et si elles n'ont pas de correspondance dans T2, les cellules prennent la valeur NULL, non ?
Oui, en passant le c.CP ~ '^76' dans le FROM, le problème est résolu. Mon exemple n'était pas très pertinent puisque ça ne sert à rien d'indiquer que la CP commence par 76!! La requête est plus pertinente lorsqu'il s'agit de chercher des noms de communes dans T2 avec la condition de jointure c.CP commençant par 76 car des noms de communes peuvent être identiques tout en se trouvant dans différents départements.
Merci
Je veux bien la différence entre un LEFT JOIN et un OUTER LEFT JOIN ? Merci
SELECT DISTINCT f.CP1, c.CP
FROM BDD.T1 f LEFT OUTER JOIN BDD.T2 c ON f.CP1 = c.CP
ORDER BY f.CP1
WHERE c.CP ~ '^76';
T1 : table dont je veux vérifier les CP au moyen de T2. T1 contient les CP : CP1, et les noms des communes NOM
T2 : table comprenant les CP des communes de France et le nom des communes : contient CP : CP, et les noms des communes : NOMCOM
Le résultat de la requête est différent si je retire la condition WHERE. Pourquoi ? WHERE c.CP ~ '^76' signifie : les CP commençant par 76 dans T2, non ? Merci
Bonjour,
Prise de tête avec un LEFT OUTER JOIN dont le résultat ne contenait pas toutes les lignes de la table de gauche. C'est la condition : WHERE c.CP ~ '^76';
qui posait problème. Néanmoins, pourriez-vous m'expliquer pourquoi ?
Je cherchais à joindre deux tables au moyen du CP, la table ne gauche ne contient que des 76... et la droite d'autres départements d'où la condition qui doit signifier "parmi les CP commençant par 76". Ai-je faux à la condition ? Sinon, qu'est-ce ?
Merci,
Bonjour,
Dans quels cas d'utilisation la jointure croisée (CROSS JOIN) est-elle utilisée ? Quel en est l'intérêt ?
Quelle est la différence entre LEFT OUTER JOIN et LEFT JOIN ?
Merci!