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.
J'ai eu le même problème. Pour le résoudre, il est plus facile de réinitialiser la base de données.
Ensuite, la migration a été effectuée avec succès pour mon cas :)
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
.
J'ai eu le même problème jusqu'à ce que je réalise que je devais le faire:
heroku rake db:migrate
:)
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
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
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.
rake db:drop
rake db:create
rake db:migrate
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.
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
heroku run rake db:migrate
heroku run Rails console
, puis en créant un modèle et en le sauvegardant.active_scaffold
ci-dessus)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.
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.
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.
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.