Erreur Heroku Postgres: PGError: ERREUR: la relation “organisations” n’existe pas (ActiveRecord :: StatementInvalid)

J’ai du mal à déployer mon application Rails sur Heroku, où cette erreur est générée lors de la tentative d’access à l’application:

PGError: ERREUR: la relation “organisations” n’existe pas (ActiveRecord :: StatementInvalid)

SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull FROM pg_atsortingbute 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.

J’ai eu le même problème. Pour le résoudre, il est plus facile de réinitialiser la firebase database.

  • heroku rake db: reset (‘heroku run rake db: reset’ si vous êtes sur cedar)
  • heroku rake db: migrer (‘heroku run rake db: migrer’ 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 firebase database

Selon mon expérience (Rails 3.1, Sedar stack) après avoir exécuté pg:reset et db:migrate vous devrez peut-être exécuter heroku restart .

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

 heroku rake db:migrate 

🙂

Ma version heroku:

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

Pour le réparer, ouvrez simplement votre terminal et lancez:

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

Dans mon cas, je devais aussi détruire et recréer mon application. J’avais exécuté un rake db: migrer avec un fichier de migration non validé et pour une raison quelconque, le pg: reset ne fonctionnait pas.

Utilisez-vous un outil? J’ai eu ce problème précis 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-to-Devise-2.0-migration-schema-style

Supprimant apparemment toute mon application et redéployant à partir de zéro, elle a été corrigée. Je n’ai aucune idée du problème.

Dans mon cas, les symptômes étaient les mêmes, mais la cause première et le remède étaient quelque peu différents. J’ai passé des heures là-dessus. J’espère que cet article sauvera quelqu’un d’autre ces heures! J’utilise:

  • Cèdre d’Heroku
  • Rails 3.2
  • ActiceScaffold Gem

Tout se passe bien localement sur SQLite, mais obtenez la même erreur PG sur Heroku. Il s’avère qu’ActiveScaffold empêche en quelque sorte le programme Heroku d’exécuter avec succès des tâches de râteau en raison d’une erreur similaire à celle décrite ci-dessus. Donc, vous obtenez un cache 22 où vous obtenez la même erreur si vous essayez d’exécuter heroku rake db: migrer ou similaire.

Maintenant le correctif:

  • Commentez les blocs de code similaires à ceux de tous les contrôleurs qui utilisent “active_scaffold”:

     active_scaffold : do |conf| end 
  • S’engager, pousser à heroku
  • heroku run rake db:migrate
  • Vérifiez que tout va bien en exécutant la heroku run rails console , puis en créant un modèle et en l’enregistrant.
  • active_scaffold maintenant les modifications (par exemple, ramenez le bloc active_scaffold ci-dessus)
  • commettre, pousser à heroku
  • vous êtes en affaires!

Je garde ma configuration locale aussi proche de la production que possible, y compris en utilisant une firebase database postgresql, donc j’ai eu ce problème sur mon ordinateur local. Je ne peux de toute façon pas supprimer ma firebase database de production. Il s’est avéré que mon problème était seulement en test, donc j’ai utilisé: rake db: test: préparez-vous à le réparer.

 rake db:drop rake db:create rake db:migrate 

J’ai eu un problème similaire et a couru heroku run rake db:reset et heroku run rake db:migrate pour résoudre le problème. Je suppose que je n’avais pas effectué les migrations appropriées pour résoudre le problème.

Plusieurs raisons peuvent expliquer cette erreur. Pour mon application, cependant, le problème était que je ne m’étais pas déconnecté de l’application avant d’exécuter la migration (?). Donc, aller sur ce chemin: http://name_of_my_app.herokuapp.com/logout résolu le problème pour moi.

Après des heures à sortinger les réponses, je me suis rendu compte que lorsque vous spécifiez

 rails new MYAPP -database POSTGRESQL 

Il modifie le fichier .gitignore en ignorant le /db/ directory entier /db/ directory , de sorte que ma firebase database ne soit jamais transmise à heroku. Supprimez-le avec précaution ou, au moins, ne disposez pas de votre nom d’utilisateur et de votre mot de passe à cet endroit.