1 votes

Heroku Postgresql error

J'ai déployé une application qui utilise ActiveRecord sur Heroku, et j'ai obtenu une erreur de serveur interne. Cela fonctionne bien sur ma machine locale (où la base de données est SQLite). Voici le message de journal de l'erreur. La table newsletters est juste une table sans association. Il n'y a qu'un seul champ pour les adresses électroniques. Je ne connais pas PostgreSQL et je ne suis pas sûr de savoir quel est le problème.

"ActiveRecord::StatementInvalid - PGError: ERROR:  relation "newsletters" does not exist
:             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 = '"newsletters"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum
:

C'est le code qui est appelé lorsque l'erreur apparaît.

  post :index, :map => "/newsletter" do
    email=params[:email]
    @signup=Newsletter.new(:email=>email)
    render "newsletter/index",:layout => false
  end

1voto

Alfred Points 5397

Je pense que Heroku trouvera votre base de données locale et que vous n'aurez qu'à écrire :

heroku db:push

Et si vous voulez récupérer des données du serveur :

heroku db:pull

0voto

picardo Points 6094

J'ai réglé mon problème. Tout ce que j'avais à faire était heroku db:push sqlite://db/local.db

0voto

fdr Points 231

La racine de ce problème est qu'ActiveRecord essaie de comprendre la structure d'une table donnée à travers quelque chose appelé "requête catalogue". Il s'agit d'une requête contre les relations de métadonnées de la base de données pour comprendre ce qui s'y passe.

Cette requête suppose que la relation existe déjà, et comme ce n'est pas le cas, elle a explosé avec un message cryptique. Il s'agit probablement d'un message d'erreur sous-idéal dans un cas d'échec assez commun, à signaler à ActiveRecord (s'il n'est pas déjà corrigé).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X