PostgreSQL déclenche une erreur: “ERREUR: permission denied pour relation table_name”
J'essaie d'importer un schéma de vidage dans PostgreSQL avec " psql -U username-W dbname < migrations/schéma.psql", le Schéma est importé en partie, mais la console jette des erreurs du type "ERREUR: permission denied pour relation table_name" et "ERREUR: rapport de la table table_name n'existe pas".
J'ai créé la base de données comme ceci: "createdb -O username dbname"
Il y a seulement 7 tables à importer, et il rompt avec juste de l'importation de 3 d'entre eux.
Quelqu'un soupçon, que faire?
Vérifiez le fichier de vidage pour tout "ALTER PROPRIÉTAIRE ..." ou "SET SESSION AUTHORIZATION..." états.
OriginalL'auteur dennis.winter | 2010-08-18
Vous devez vous connecter pour publier un commentaire.
Si la sauvegarde a été dans la "coutume" format (Fc), vous pouvez utiliser pg_restore à la place de sorte que vous pouvez dire de ne pas appliquer des modifications de la propriété:
Tous les objets créés avec "nom d'utilisateur" en tant que propriétaire.
À défaut, essayez de filtrer les MODIFIER PROPRIÉTAIRE et SET SESSION AUTHORIZATION commandes dans un nouveau fichier (ou par l'intermédiaire d'envoyer grep sortie via le tuyau pour psql). Ces commandes doivent toujours être sur une seule ligne de texte format de sortie.
Duh. Oublié à ce sujet, je vais mettre à jour ma réponse à une autre idée.
OriginalL'auteur Matthew Wood
Parfois ce genre de problème est causé par cas les questions de sensibilité. PostgreSQL plis minuscules tous les identificateurs non cotées; si les tableaux sont créés avec la cité des noms contenant des lettres majuscules, plus tard, les commandes qui ne sont pas citer les noms risquent de ne pas trouver la table.
Les erreurs d'autorisation peuvent être liés à la même chose, ou il peut être quelque chose d'autre entièrement. Difficile à dire sans voir la faute de commandes.
OriginalL'auteur alvherre
Que je travail sur mon site web, j'obtiens cette erreur tout le temps parce que je vais être la création d'une table que moi, la table qui doit être accessible par le serveur Apache/PHP utilisateur qui se connecte plus tard.
Il y a une table nommée pg_class qui définit vos tables. Cela comprend une colonne nommée relowner. Changer avec le nombre correct vous donnera de la propriété correcte.
Je avoir des détails sur cette page:
http://linux.m2osw.com/table_owner_in_postgresql
L'ALTER PROPRIÉTAIRE ... peut-être une meilleure solution qui fait la même chose, bien que dans les anciennes versions de PostgreSQL, il n'a pas existe pas!
Oui. Si vous êtes le maître d'oeuvre, c'est une bonne idée d'utiliser les bonnes permissions (tant que vous n'avez pas trop le faire.) Le système que j'ai utilisé est appelé Drupal et il est prévu qu'il ont tous les droits dans la création, la modification et la suppression de tables. Pas le meilleur choix à mon point de vue, mais qui permet aux administrateurs de tout faire directement à partir de leur site web (c'est à dire installer, mettre à jour, supprimer des modules de créer, modifier et supprimer des tables...), j'ai un autre système, cependant, où le front-end n'a pas de telles autorisations. Toutes les tables doivent exister et seulement INSÉRER/mettre à JOUR et à la fois de SUPPRIMER le travail...
oui, dans mon opion nous utilisation restreinte des autorisations pour l'utilisateur. En regardant votre scénario de Drupal, je trouve ça effrayant de l'application des droits complets. Si un utilisateur trouve une faille dans la logique du programme, qui pourrait signifier la fin des données. De toute façon, c'est une autre question...
OriginalL'auteur Alexis Wilke