3 Stimmen

Heroku Push Problem Teil 2 - Postgresql - PGError Relations existiert nicht - Ruby on Rails

Ok, ich habe mein letztes Problem mit dem Unterschied zwischen Postgresql und SQLite überwunden und es scheint, dass Heroku mir sagt, dass ich ein weiteres Problem habe. Ich bin neu in Ruby und Rails, so dass eine Menge von diesem Zeug, das ich nicht auf den ersten entziffern kann. Auf der Suche nach ein wenig Richtung hier. Die Fehlermeldung und PostsController Index sind unten. Ich überprüfte meine routes.rb-Datei und alles scheint gut, aber ich könnte etwas übersehen werden. Ich werde posten, wenn Sie benötigen.

Processing PostsController#index (for 99.7.50.140 at 2010-04-23 15:19:22) [GET]

ActiveRecord::StatementInvalid (PGError: ERROR:  relation "tags" 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 = '"tags"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum
):

PostsController#index

  def index
    @tag_counts = Tag.count(:group => :tag_name, 
       :order => 'count_all DESC', :limit => 20)
       conditions, joins = {}, :votes

    @ugtag_counts = Ugtag.count(:group => :ugctag_name, 
       :order => 'count_all DESC', :limit => 20)
       conditions, joins = {}, :votes

    @vote_counts = Vote.count(:group => :post_title, 
          :order => 'count_all DESC', :limit => 20)
          conditions, joins = {}, :votes

       unless(params[:tag_name] || "").empty?
         conditions = ["tags.tag_name = ? ", params[:tag_name]]
         joins = [:tags, :votes]
       end
       @posts=Post.paginate(
                 :select => "posts.*, count(*) as vote_total", 
                 :joins => joins, 
                 :conditions=> conditions, 
                 :group => "votes.post_id, posts.id ", 
                 :order => "created_at DESC",
                 :page => params[:page], :per_page => 5)
        @popular_posts=Post.paginate(
                 :select => "posts.*, count(*) as vote_total", 
                 :joins => joins, 
                 :conditions=> conditions, 
                 :group => "votes.post_id, posts.id", 
                 :order => "vote_total DESC",
                 :page => params[:page], :per_page => 3)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @posts }
      format.json { render :json => @posts }
      format.atom
    end
  end

2voto

Clinton Punkte 3598

Ich bin auf einen ähnlichen "PGError" gestoßen: ERROR: relation "..." does not exist" Problem beim Upgrade von Rails 3.0.3 auf Rails 3.0.5 - es sieht so aus, als ob der Algorithmus zur Pluralisierung von Datenbanknamen geändert wurde. Was ich früher pluralisieren musste: "project_metadatas" wird nun als "project_metadata" bezeichnet.

Die Lösung bestand für mich darin, eine einfache Migration hinzuzufügen, die die betreffende Tabelle umbenennt:

class MetadataName < ActiveRecord::Migration
  def self.up
    rename_table :project_metadatas, :project_metadata
  end

  def self.down
    rename_table :project_metadata, :project_metadatas
  end
end

1voto

Bill Karwin Punkte 493880

Das sieht seltsam aus:

WHERE a.attrelid = '"tags"'::regclass

Die einfachen Anführungszeichen begrenzen ein Zeichenfolgenliteral, so dass die inneren doppelten Anführungszeichen als Teil der Zeichenfolge behandelt werden. Es wird also nach einem Tabellennamen gesucht, der tatsächlich " Zeichen als Teil des Namens.

Ich bin mir nicht sicher, wie das Rails-System diese Abfrage generiert hat, also kann ich nichts vorschlagen, um sie zu beheben. Tut mir leid...

Aber dies scheint definitiv eine Undichte Abstraktion Problem. :-)

1voto

ranska Punkte 11

Hallo ich habe etwas gefunden also mein problème war:

 `enter code here`WHERE a.attrelid = '"posts"'::regclass

Verwenden einige von Ihnen Gems wie rails_admin mit Initialisierungsdatei? weil, wenn ich meine Aktion in meinem Initializer-Datei im Zusammenhang mit diesem Modell meine Migartion funktioniert kommentieren :)

 #config.model Post do
 #  field :body, :text do
 #    ckeditor true
 #  end
 #end

So vielleicht (i m nicht sur) Initialisierer sind vor Rake Aufgabe und. Es fragt nach einem Modell, aber es gibt aber es gibt keine Sql-Tabelle, also Bug. sowieso diese Aktion Arbeit für meinen Test und Produktion env :)

1voto

aaron-prindle Punkte 2597

Ich hatte das gleiche Problem, das Problem war, dass ich vergessen hatte, die Datenbank mit Rake zu migrieren. Mit dem Folgenden funktionierte alles korrekt:

bundle exec rake db:migrate

0voto

Shripad Krishna Punkte 10293

Welche Edelsteine werden von dieser Rails-Anwendung verwendet? Haben Sie eine .gems manifest Datei im Root der App für Heroku automatisch zu erkennen und zu installieren? ich sehe, dass Sie werden paginate gem verwenden. Wenn du die Gems nicht zur .gems Datei hinzugefügt hast, dann schätze ich, dass das das Problem ist. Wenn Sie das nicht getan haben, dann wäre dies der beste Ort, um nach Hilfe zu suchen: Heroku | Edelsteine verwalten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X