web-dev-qa-db-fra.com

Erreur Heroku Postgres: PGError: ERREUR: la relation "organisations" n'existe pas (ActiveRecord :: StatementInvalid)

Je ne parviens pas à déployer mon application Rails sur Heroku. Cette erreur est générée lors d'une tentative d'accès à l'application: 

PGError: ERROR: la relation "organisations" n'existe pas (ActiveRecord :: StatementInvalid)

SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
  ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"organizations"'::regclass
  AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum

Quelqu'un a des idées? C'est une première pour moi, notamment parce que je travaille avec Heroku depuis un an sur d'autres applications et que je n'ai rien vu de tel. Bien sûr, tout fonctionne sur SQLite local.

43
Mark

J'ai eu le même problème. Pour le résoudre, il est plus facile de réinitialiser la base de données.

  • heroku rake db: reset ('heroku lance rake db: reset' si vous êtes sur cèdre)
  • heroku rake db: migrate ('heroku run rake db: migrate' si vous êtes sur cedar)

Ensuite, la migration a été effectuée avec succès pour mon cas :)

Bien que ce soit une bonne solution dans ce contexte, ne le faites pas en production. Il supprimera tous les enregistrements de votre base de données

80
akipponn

Selon mon expérience (Rails 3.1, pile Sedar) après avoir exécuté pg:reset et db:migrate, vous pourriez avoir à exécuter heroku restart

19
a.b.d

J'ai eu le même problème jusqu'à ce que je réalise que je devais le faire:

heroku rake db:migrate

:) 

18
Victor S

Ma version de heroku:

heroku --version
#=> heroku-gem/2.29.0 (x86_64-linux) Ruby/1.9.3

Pour résoudre ce problème, ouvrez simplement votre terminal et exécutez:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME
heroku run rake db:setup
heroku restart
heroku open
7
Flavio Wuensche

Utilisez-vous des cartes? J'ai eu ce problème exact lors de la mise à niveau vers la version 2.0 - Vous devez modifier manuellement le fichier de migration.

https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-t/Devise-2.0-migration-schema-style

1
Tim Fletcher

Dans mon cas, j'ai également dû détruire et recréer mon application. J'avais exécuté une base de données rake: migrer avec un fichier de migration non validé et pour une raison quelconque, le pg: reset ne fonctionnait pas.

1
user555298
rake db:drop
rake db:create
rake db:migrate
0
Connor Leech

Apparemment, la suppression de toute mon application, puis le redéploiement à partir de zéro, l'ont corrigée. Je n'ai aucune idée de quel était le problème.

0
Mark

Dans mon cas, les symptômes étaient les mêmes, mais la cause première et le remède se sont avérés quelque peu différents. J'ai passé des heures à ça. Espérons que ce post permettra à quelqu'un d'autre d'économiser ces heures! J'utilise:

Tout fonctionne correctement localement sur SQLite, mais la même erreur PG apparaît sur Heroku. Il s'avère qu'ActiveScaffold empêche Heroku Push d'exécuter correctement les tâches de rake en raison d'une erreur similaire à ci-dessus. Donc, vous obtenez un cache 22 où vous obtenez la même erreur si vous essayez d'exécuter heroku rake db: migrate ou similaire.

Maintenant le correctif:

  • Mettez en commentaire les blocs de code similaires aux contrôleurs all utilisant "active_scaffold":

    active_scaffold :<model_name> do |conf|
    end
    
  • Commit, pousse à heroku
  • heroku run rake db:migrate
  • Vérifiez que tout va bien en exécutant heroku run Rails console, puis en créant un modèle et en le sauvegardant.
  • Maintenant, annulez les modifications (c.-à-d. Ramenez le bloc active_scaffold ci-dessus)
  • commettre, pousser à heroku
  • vous êtes en affaires!
0
paneer_tikka

Après des heures à passer en revue la réponse, je me suis rendu compte que lorsque vous spécifiez

Rails new MYAPP -database POSTGRESQL

cela modifie le fichier .gitignore en ignorant le /db/ directory au complet, de sorte que ma base de données n'a jamais été poussée à la hauteur de heroku. Supprimez-le avec précaution, ou du moins n'avez pas votre nom d'utilisateur et votre mot de passe là où vous le souhaitez.

0
dominathan

Je garde ma configuration locale aussi proche que possible de la production, y compris en utilisant une base de données postgresql, de sorte que j'ai eu ce problème sur ma machine locale. Je ne peux quand même pas supprimer ma base de données de production. Il s’est avéré que mon problème n’était que dans le test, j’ai donc utilisé: rake db: test: prepare pour le réparer.

0
Greg Silcox

J'ai eu un problème similaire et ai exécuté heroku run rake db:reset et heroku run rake db:migrate pour résoudre le problème. Je suppose que je n'avais tout simplement pas lancé les migrations appropriées pour résoudre le problème.

0
gr1zzly be4r

Il peut y avoir plusieurs raisons à cette erreur. Pour mon application, toutefois, le problème était que je ne m'étais pas déconnecté de l'application avant d'exécuter la migration (?). Alors allez dans cette voie: http://name_of_my_app.herokuapp.com/logout résolu le problème pour moi. 

0
Dave Sloan