webentwicklung-frage-antwort-db.com.de

Heroku Postgres-Fehler: PGError: ERROR: Beziehung "Organisationen" ist nicht vorhanden (ActiveRecord :: StatementInvalid)

Bei der Bereitstellung meiner Rails-App bei Heroku ist ein Problem aufgetreten. Dieser Fehler wird beim Zugriff auf die App ausgelöst: 

PGError: ERROR: Relation "Organisationen" ist nicht vorhanden (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

Hat jemand Ideen? Dies ist eine Premiere für mich, vor allem, weil ich mit Heroku seit einem Jahr an anderen Apps arbeite und so etwas nicht gesehen habe. Natürlich funktioniert alles auf lokaler SQLite.

43
Mark

Ich hatte das gleiche Problem. Um das Problem zu lösen, ist das Zurücksetzen der Datenbank einfacher.

  • heroku rake db: reset ('heroku run rake db: reset' wenn Sie auf Zeder sind)
  • heroku rake db: migrate

Dann wurde die Migration für meinen Fall erfolgreich durchgeführt :)

Dies ist zwar in diesem Zusammenhang eine gute Lösung, aber nicht in der Produktion. Es werden alle Datensätze aus Ihrer Datenbank gelöscht

80
akipponn

Nach meiner Erfahrung (Rails 3.1, Sedar Stack) müssen Sie nach dem Ausführen von pg:reset und db:migrateheroku restart ausführen. 

19
a.b.d

Ich hatte das gleiche Problem, bis mir klar wurde, dass ich etwas tun musste:

heroku rake db:migrate

:) 

18
Victor S

Meine Heroku-Version:

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

Um das Problem zu beheben, öffnen Sie einfach Ihr Terminal und führen Sie Folgendes aus:

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

Benutzt du das Gerät? Beim Upgrade auf 2.0 hatte ich genau dieses Problem. Sie müssen die Migrationsdatei manuell ändern.

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

1
Tim Fletcher

In meinem Fall musste ich auch meine App zerstören und neu erstellen. Ich hatte eine Rake-Datenbank ausgeführt: Migration mit einer nicht festgeschriebenen Migrationsdatei und aus irgendeinem Grund funktionierte das pg: reset nicht.

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

Anscheinend wurde meine gesamte App gelöscht und dann von Grund auf neu bereitgestellt. Ich habe keine Ahnung, was das Problem war.

0
Mark

In meinem Fall waren die Symptome die gleichen, aber die Ursache und das Mittel waren etwas anders. Stunden damit verbracht. Hoffentlich rettet dieser Post jemand anderen diese Stunden! Ich benutze:

Auf SQLite läuft alles lokal einwandfrei, aber bei Heroku wird der gleiche PG-Fehler angezeigt. Es stellt sich heraus, dass ActiveScaffold Heroku Push irgendwie daran hindert, Rake-Tasks aufgrund eines Fehlers ähnlich wie oben auszuführen. Sie erhalten also einen Cache 22, in dem Sie dieselbe Fehlermeldung erhalten, wenn Sie versuchen, heroku rake db: migrate oder ähnliches auszuführen.

Nun das Update:

  • Kommentieren Sie Codeblöcke ähnlich den folgenden von all -Controllern aus, die "active_scaffold" verwenden:

    active_scaffold :<model_name> do |conf|
    end
    
  • Commit, Push auf Heroku
  • heroku run rake db:migrate
  • Vergewissern Sie sich, dass alles in Ordnung ist, indem Sie heroku run Rails console ausführen und dann ein Modell erstellen und speichern.
  • Setzen Sie nun die Änderungen zurück (d. H. Bringen Sie den obigen active_scaffold-Block zurück).
  • begehen Sie, drücken Sie zu Heroku
  • du bist im Geschäft!
0
paneer_tikka

Nach stundenlangem Durchsuchen der Antwort bemerkte ich das, wenn Sie angeben

Rails new MYAPP -database POSTGRESQL

es ändert die .gitignore -Datei und ignoriert den gesamten /db/ directory, sodass meine Datenbank nie auf heroku übertragen wurde. Entfernen Sie es mit Vorsicht, oder haben Sie zumindest Ihren Benutzernamen und Ihr Kennwort nicht dort, wo Sie Push-Up verwenden.

0
dominathan

Ich halte mein lokales Setup so nahe wie möglich an der Produktion, einschließlich der Verwendung einer Postgresql-Datenbank. Ich hatte also dieses Problem auf meinem lokalen Rechner. Ich kann meine Produktionsdatenbank trotzdem nicht löschen. Es stellte sich heraus, dass mein Problem nur im Test war, also verwendete ich: rake db: test: bereiten Sie sich darauf vor, das Problem zu beheben.

0
Greg Silcox

Ich hatte ein ähnliches Problem und habe heroku run rake db:reset und heroku run rake db:migrate ausgeführt, um das Problem zu beheben. Ich denke, ich hatte einfach nicht die richtigen Migrationen durchgeführt, um das Problem zu beheben.

0
gr1zzly be4r

Für diesen Fehler kann es viele Gründe geben. Bei meiner App bestand das Problem jedoch darin, dass ich mich vor dem Ausführen der Migration nicht von der App abgemeldet hatte. Gehen Sie also zu diesem Pfad: http://name_of_my_app.herokuapp.com/logout hat das Problem für mich behoben. 

0
Dave Sloan