2010-10-21 6 views
2

J'ai configuré un système pour télécharger et stocker automatiquement un vidage db à partir de mon application Heroku rails déployés. Tout fonctionne très bien, mais quand je télécharger le dump et restore à mon serveur postgres locaux puis essayer de courir mon application locale de cette base de données restaurée je reçois cette erreurErreur lors de la restauration de la sauvegarde de la base de données postgres

ActiveRecord::StatementInvalid in HomeController#index 

PGError: ERROR: permission denied for relation users : SELECT  "users".* FROM  "users" WHERE  ("users"."id" = 1) LIMIT 1 

Quelqu'un a des suggestions sur ce qui pourrait être? J'ai vérifié mes permissions postgres et toutes les tables et la base de données elle-même appartiennent à l'utilisateur postgres. J'ai essayé GRANT ALL ainsi sans succès.

+0

Vous devez inclure dans votre question la commande que vous avez utilisée pour effectuer la restauration. – Ritchie

Répondre

2

Passez par votre pgdump.sql fichiers et supprimez les lignes après chaque déclaration CREATE TABLE qui disent quelque chose comme:

ALTER TABLE public.users OWNER TO eqrunyvndu; 

Ensuite, exécutez votre restauration à partir de cela et cela devrait fonctionner. Ces lignes changent le propriétaire des tables au nom d'utilisateur db autogénéré de votre application heroku, ce qui n'a pas de sens localement, donc vous pouvez simplement les supprimer.

Je vous recommande également de grep pour toutes les autres occurrences de ce nom d'utilisateur et de les supprimer aussi.

+0

'$ grep -v" PROPRIÉTAIRE DE "pgdump.sql> pgdump-local.sql' – wuputah

+0

Hmm, je n'ai aucune occurence de' ALTER TABLE public.users PROPRIÉTAIRE à eqrunyvndu; 'ou même une seule occurrence de' OWNER 'dans mon fichier de vidage ... – erskingardner

+0

Cela ressemble à un problème avec la configuration de votre serveur Postgres alors ... Vous savez que' eqrunyvndu' est généré, non? Ce sera différent pour votre application. – tfe

0

L'utilisateur PostgreSQL que vous utilisez est probablement celui qui est propriétaire de cette table. Je suppose que vous avez un utilisateur différent sur cette base de données et sur celui-ci?

+0

J'ai seulement un utilisateur dans mon installation de serveur de postgres: postgres. Voulez-vous dire que l'utilisateur de la base de données dont je reçois le vidage a un utilisateur différent? Je ne suis pas sûr de suivre. – erskingardner

+0

Etes-vous sûr de vous connecter à la bonne base de données? –

+0

Et qu'est-ce que vous avez dans les journaux postgresql à propos de cette autorisation refusée? –

Questions connexes