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 22/09/2021 17:05:21

AurelieAPSA
Membre

Le rôle n'existe pas... bien qu'il existe

Bonjour,
Je souhaite travailler sur l’application ODOO. De ce fait j’ai installé PostgreSQL 13, ODOO 14 et Python 3.9.
Malheureusement ODOO ne se connecte pas au serveur PostgreSQL, dans les log j’ai le message suivant :

2021-09-22 16:02:05.758 CEST [17280] FATAL:  le rôle « AurélieFougère » n'existe pas

La connection à PostgreSQL se fait via mon identifiant Windows, et nom via le user « odoo ».
J’ai suivi les conseils de différents utilisateurs, et ai crée un rôle en respectant les majuscules ou tout en minuscules…sans succès

postgres=# \du
                                                Liste des r¶les
   Nom du r¶le   |                                    Attributs                                    | Membre de
-----------------+---------------------------------------------------------------------------------+-----------
AurÚlieFougÞre  | Superutilisateur, CrÚer un r¶le, CrÚer une base                                 | {}
AurélieFougère  | Superutilisateur, CrÚer un r¶le, CrÚer une base                                 | {}
auréliefougère  | Superutilisateur, CrÚer un r¶le, CrÚer une base                                 | {}
odoo            | Superutilisateur, CrÚer un r¶le, CrÚer une base, RÚplication                    | {}
postgres        | Superutilisateur, CrÚer un r¶le, CrÚer une base, RÚplication, Contournement RLS | {}
testuser        | Superutilisateur, CrÚer un r¶le, CrÚer une base                                 | {}

A chaque modification, j’ai redémarré le serveur postgresql.

Merci pour votre aide

Hors ligne

#2 22/09/2021 17:11:51

gleu
Administrateur

Re : Le rôle n'existe pas... bien qu'il existe

Votre soucis vient probablement des accents. Personnellement, j'aurais plutôt tendance à n'utiliser que les caractères ASCII pour le nommage des objets (rôles comme bases, tables, vues, etc). Les problèmes liés aux encodages sont trop faciles pour s'embêter avec ça.


Guillaume.

Hors ligne

#3 22/09/2021 17:17:42

AurelieAPSA
Membre

Re : Le rôle n'existe pas... bien qu'il existe

Merci pour ta réponse.
Je suis d'accord avec toi, je pense que c'est un problème d'accent mais je ne peux pas modifier mon identifiant Windows...donc j'espère que quelqu'un qui a rencontré le même problème et qui l'a solutionné, saura me conseiller ;-)

Hors ligne

#4 23/09/2021 03:58:14

rjuju
Administrateur

Re : Le rôle n'existe pas... bien qu'il existe

Le logiciel force l'utilisateur de connexion?  Cela me semble un bien mauvaise idée mais soit.



Le problème vient bien de l'encodage, il faudrait savoir quel est l'encodage utilisé soit par odoo soit par windows pour votre user.  Peut être que copier/coller le nom d'utilisateur depuis les logs suffirait créer le bon rôle.

Hors ligne

#5 23/09/2021 10:05:41

AurelieAPSA
Membre

Re : Le rôle n'existe pas... bien qu'il existe

Merci pour ta réponse Julien.

J'ai testé en faisant un copier/coller du user mentionné dans les log, mais ça n'a pas fonctionné j'ai toujours le même message d'erreur.

Hors ligne

#6 23/09/2021 12:35:46

dverite
Membre

Re : Le rôle n'existe pas... bien qu'il existe

Quand se produit l'erreur "FATAL:  le rôle « AurélieFougère » n'existe pas" alors que \du montre que  "AurélieFougère" est un rôle existant, c'est que les deux termes n'ont pas le même encodage.
Typiquement  celui mentionné dans le fichier de log est encodé en UTF-8 alors que celui de la base est en LATIN1 ou vice versa.

Pour savoir quel est l'encodage en base, on peut afficher les codes des caractères via une requête. Par exemple:

test=> create user "Aurélie";
CREATE ROLE
test=> select r,r::bytea from pg_user, regexp_split_to_table(usename,'') as r where usename like 'Aur%';
 r |   r    
---+--------
 A | \x41
 u | \x75
 r | \x72
 é | \xc3a9
 l | \x6c
 i | \x69
 e | \x65
(7 lignes)

Le code \xc3a9 en face du 'é' montre que c'est de l'UTF-8 ,ce qui correspond effectivement à mon environnement quand je fais CREATE USER. Si c'était \xe9 ça montrerait que c'est du LATIN1. Si l'authentification n'utilise pas le même encodage que ce qui est en base, ça explique pourquoi ça n'arrive pas à se connecter.

En principe on privilégie l'UTF-8 parce qu'il englobe tous les caractères de toutes les langues. Si nom d'utilisateur n'est pas stocké dans le bon encodage, il faudrait le recréer dans un environnement UTF-8 sûr (c.a.d. à mon sens pas la console Windows).

Hors ligne

#7 24/09/2021 09:45:39

AurelieAPSA
Membre

Re : Le rôle n'existe pas... bien qu'il existe

Merci Daniel pour ta réponse

J'ai exécuté la commande que tu as indiqué, et j'obtiens ceci :
A | \x41
u | \x75
r | \x72
é | \xe2809a
l | \x6c
i | \x69
e | \x65
F | \x46
o | \x6f
u | \x75
g | \x67
è | \xc5a0
r | \x72
e | \x65
A | \x41
u | \x75
r | \x72
é | \xe2809a
l | \x6c
i | \x69
e | \x65
Je n'ai pas trouvé de correspondance avec le caractère \xe2809a...en tout cas ce n'est pas de l'UTF-8!
Je vais essayé de voir si je peux renommer mon identifiant Windows.

Hors ligne

Pied de page des forums