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.
Ich hatte das gleiche Problem. Um das Problem zu lösen, ist das Zurücksetzen der Datenbank einfacher.
Dann wurde die Migration für meinen Fall erfolgreich durchgeführt :)
Nach meiner Erfahrung (Rails 3.1, Sedar Stack) müssen Sie nach dem Ausführen von pg:reset
und db:migrate
heroku restart
ausführen.
Ich hatte das gleiche Problem, bis mir klar wurde, dass ich etwas tun musste:
heroku rake db:migrate
:)
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
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
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.
rake db:drop
rake db:create
rake db:migrate
Anscheinend wurde meine gesamte App gelöscht und dann von Grund auf neu bereitgestellt. Ich habe keine Ahnung, was das Problem war.
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
heroku run rake db:migrate
heroku run Rails console
ausführen und dann ein Modell erstellen und speichern.active_scaffold
-Block zurück).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.
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.
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.
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.