Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je me connecte sous un utilisateur à ma bdd :
psql -U mon_utilisateur ma_bdd
puis je fais
DROP FUNCTION ma_fonction();
la console psql me retourne :
must be owner of function ma_fonction
Je fais alors
SELECT p.proname, u.usename
FROM pg_proc as p
INNER JOIN pg_user as u ON p.proowner = u.usesysid
WHERE p.proname = ma_fonction';
proname | usename
--------------------------+----------
ma_fonction | postgres
je vois que la fonction appartient à postgres, je me connecte alors en psql sous postgres :
psql -U postgres
et là je fais
ALTER FUNCTION ma_fonction() OWNER TO mon_utilisateur;
ERROR: role "mon_utilisateur" does not exist
je fais alors
SELECT p.proname, u.usename
FROM pg_proc as p
INNER JOIN pg_user as u ON p.proowner = u.usesysid
WHERE p.proname = ma_fonction';
proname | usename
---------+---------
(0 rows)
je quitte la console et essaie de me connecter à ma_bdd sous postgres :
psql -U postgres ma_bdd
psql: FATAL: database "ma_bdd" does not exist
j'ouvre une console sans spécifier de base en postgres :
psql -U postgres
postgres=# ALTER USER mon_utilisateur WITH SUPERUSER;
ERROR: role "mon_utilisateur" does not exist
bref postgres ne reconnaît pas l'existence de la fonction, ni celle de ma bdd ni celle de mon utilisateur.
Vous pourriez m'aider à supprimer cette fonction ?
Hors ligne
Bonjour,
Pour le premier problème, c'est normal que la fonction ne soit pas trouvée sur une autre base que "ma_bdd". Pour les autres problèmes, cela semble être lié à des variables d'environnement différentes, si la connexion est faîte depuis un utilisateur système différent par exemple.
Julien.
https://rjuju.github.io/
Hors ligne
Merci pour ta réponse, tu m'a mis sur la voie et j'ai trouvé la solution à mon problème :
psql -U mon_utilisateur ma_bdd
puis
ma_bdd=> \c ma_bdd postgres
psql (8.4.17)
You are now connected to database "ma_bdd" as user "postgres".
c'est avec \c que mon problème s'est donc résolu.
Par la suite j'ai pu supprimer ma fonction normalement avec DROP.
Où dois-je marquer mon pb comme étant résolu dans le forum ?
Dernière modification par masterpastek (10/09/2014 09:55:46)
Hors ligne
> Où dois-je marquer mon pb comme étant résolu dans le forum ?
Il n'y a pas de moyen de le faire (et c'est très bien ainsi). Mais si vous voulez vraiment le faire, il faut modifier le titre de la discussion.
Guillaume.
Hors ligne
Où dois-je marquer mon pb comme étant résolu dans le forum ?
Sur votre premier message, il y a un lien "modifier". En cliquant dessus, vous pouvez modifier le sujet de la discussion pour ajouter "[Résolu]"
Hors ligne
Pages : 1