Ich habe kürzlich den hier beschriebenen Datenbankmigrationsprozess durchlaufen:
https://devcenter.heroku.com/articles/migrating-from-shared-database-to-heroku-postgres
Jetzt sehe ich eine Reihe von Fehlern in den Protokollen wie folgt:
PGError: ERROR: Berechtigung für Beziehung verweigert
Irgendwelche Ideen, was ich tun sollte, um das Problem zu beheben?
database
postgresql
heroku
permissions
suttree
quelle
quelle
Antworten:
Ich hatte ein ähnliches Problem, aber die Hauptursache war, dass meine App auf die alte Entwicklerdatenbank zeigte, die das Limit von 10.000 Zeilen überschritten hatte.
Obwohl ich eine neue Basic-Datenbank erstellt und alles gesichert habe, zeigte die App immer noch auf die alte Entwicklungsdatenbank.
Überprüfen Sie die Zeilen: 10300/10000 (dann haben Sie ein Problem)
Sie müssen
1) eine neue Datenbank mit mehr Zeilen erstellen (Basic oder die "Production" -> Heroku scheint ein Upgrade zu erzwingen, um mehr Geld zu verdienen errrrrr)
2) die alte Datenbank mit pgbackups sichern:
heroku pg:backups:capture SMALL_DB_NAME
3) die Sicherung auf wiederherstellen Die neue Datenbank :
heroku pg:backups:restore BACKUP_ID BIG_DB_NAME
(Weitere Informationen findenSie unter den folgenden Links.) 4) FÖRDERN Sie die neue Datenbank an die primäre Datenbank für die App:
heroku pg:promote BIG_DB_NAME
kann immer nutzen:
Wenn dies das Problem ist, sollten Sie Folgendes überprüfen: https://devcenter.heroku.com/articles/heroku-postgres-starter-tier https://devcenter.heroku.com/articles/migrating-from-shared-database -zu-Heroku-Postgres
quelle
UPDATE: Ashtons Antwort zeigt es in dieser Situation, die sehr Heroku-spezifisch ist. Wenn Sie dies bei einer Suche nach PostgreSQL-Fehlermeldungen oder -Problemen gefunden haben, aber Heroku nicht verwenden, suchen Sie nach anderen Fragen, die eher auf Ihre Situation zutreffen.
Vermutlich ist die PostgreSQL-Benutzer-ID, mit der Sie sich verbinden, nicht der Eigentümer Ihrer Tabellen, und Sie haben keine expliziten
GRANT
Anweisungen ausgegeben , um ihr Zugriff darauf zu gewähren. Ohne genau zu sehen , was Sie bei der Migration ausgeführt haben, ist es schwer, mehr zu sagen - und Heroku versteckt sowieso viele der Interna.Lassen Sie uns herausfinden, wie die aktuelle Situation ist. Versuchen Sie, eine Verbindung herzustellen
psql
und auszuführen:und zeigen die gemeldeten Berechtigungen. Zeigen Sie auch das Ergebnis von:
SHOW current_user;
Ausführen von
psql
und wenn als SQL-Abfrage in Ihrer Anwendung ausgeführt.Bearbeiten Sie Ihre Frage, um diese Informationen und den vollständigen, genauen Text der Fehlermeldung hinzuzufügen, die Sie erhalten .
quelle
psql
in diesem Zusammenhang lowlevelpsql
. Der einfache Weg ist,heroku pg:psql
aber Sie können ihn auchpsql
direkt mit der von heroku erhaltenen Datenbankverbindungszeichenfolge verwenden.Schritte basierend auf Ashtons Antwort auf ein Upgrade von Dev (maximal 10.000 Zeilen) auf Basic (maximal 10 Millionen Zeilen)
Überprüfen Sie, ob die DB-Zeilen das Limit überschritten haben
Deaktivieren Sie die App und die Mitarbeiter, um sicherzustellen, dass während des Datenbank-Upgrades keine Datenbankänderungen vorgenommen werden
wenn Sie keine pgbackups haben
Datenbank sichern und Sicherungs-ID abrufen
Datenbank mit Webinterface hinzufügen
Wenn Sie die Heroku-Konfiguration anzeigen, sollte eine neue Datenbank-URL angezeigt werden
heroku config --remote heroku
Backup auf neue Datenbank wiederherstellen
heroku pg:backups:restore BACKUP_ID NEW_DB_URL
Ändern Sie DATABASE_URL
Aktivieren Sie die App und die Mitarbeiter
quelle
pgbackups:capture
zu Heroku geändert hatpg:backups:capture
. Beachten Sie das Semikolon zwischenpg:backups
Nach dem Löschen der zusätzlichen Zeilen erhalten Sie die Einfügeberechtigungen nicht sofort zurück. Löschen Sie in diesem Fall die zusätzlichen Zeilen und führen Sie sie anschließend
heroku pg:info
aus. Dadurch werden die Berechtigungen Ihrer Datenbank aktualisiert und Sie erhalten den Zugriff in wenigen Minuten wieder. Es ist nicht erforderlich, die vorhandene Datenbank in eine neue zu klonen und die neue als Datenbank Ihrer App festzulegen.$ heroku pg:info === HEROKU_POSTGRESQL_BRONZE_URL, DATABASE_URL Plan: Hobby-dev Status: Available Connections: 3/20 PG Version: 9.3.6 Created: 2014-03-01 13:47 UTC Data Size: 1.25 GB Tables: 4 Rows: 2098/10000 (Write access revoked) - refreshing Fork/Follow: Unsupported Rollback: Unsupported Add-on: grinning-busily-5587
quelle
Ich befand mich in einer Situation, in der ich das Zeilenanzahllimit überschritten habe.
In dieser Antwort wurde erläutert, wie die Anzahl der Zeilen in jeder Tabelle aufgelistet wird : http://stackoverflow.com/questions/12701711/heroku-row-count-incorrect
Sehr wertvoll zu wissen.
Sie können über das Terminal in die psql-Konsole gelangen. Die Verbindungseinstellungen werden im Heroku-Dashboard für Ihre App aufgelistet!
quelle
Ich hatte ein ähnliches Problem bei meiner Redmine-Anwendung:
PG::InsufficientPrivilege: ERROR: permission denied for relation settings : SELECT "settings".* FROM "settings" WHERE "settings"."name" = 'plugin_redmine_wktime' LIMIT 1
Meine Schritte waren:
Die Ursache für mein Problem war nur der falsche Benutzername in der alten redmine-Datei config / database.yml
quelle