簡體   English   中英

PGError:錯誤:關系被拒絕(使用Heroku時)

[英]PGError: ERROR: permission denied for relation (when using Heroku)

我最近經歷了數據庫遷移過程,如下所述:

https://devcenter.heroku.com/articles/migrating-from-shared-database-to-heroku-postgres

現在我在日志中看到了許多錯誤,如下所示:

PGError:錯誤:關系被拒絕

關於我應該怎么做才能修復它的任何想法?

我有一個類似的問題,但根本原因是我的應用程序指向舊的開發數據庫,​​超過了它的10,000行限制。

雖然我創建了一個新的基本數據庫並備份了所有內容,但應用程序仍指向舊的開發數據庫。

heroku pg:info

檢查看行:10300/10000(那你有問題)

你需要

1)創建具有更多行的新數據庫(基本或“生產” - > Heroku似乎強制升級以賺取更多錢errrrrr)

2)使用pgbackups備份舊數據庫: heroku pg:backups:capture SMALL_DB_NAME

3)將備份恢復到新數據庫: heroku pg:backups:restore BACKUP_ID BIG_DB_NAME (有關詳細信息,請參閱下面的鏈接)

4)將新數據庫heroku pg:promote BIG_DB_NAME到應用程序的主數據庫: heroku pg:promote BIG_DB_NAME

總能利用:

heroku maintenance:on (在更新時禁用應用程序)


heroku maintenance:off


heroku pg:info (檢查狀態)

如果這是您可能想要查看的問題: https//devcenter.heroku.com/articles/heroku-postgres-starter-tier https://devcenter.heroku.com/articles/migrating-from-shared-database -to-的Heroku-的Postgres

更新:阿什頓的答案在這種情況下指出它,這是非常具體的Heroku。 如果你發現這個從PostgreSQL的錯誤信息或問題的搜索,但沒有使用Heroku的,請認准更有可能適用於您的情況的其他問題。


猜測,您連接的PostgreSQL用戶ID不是表的所有者,並且您沒有發出任何顯式GRANT語句來授予它訪問權限。 如果沒有看到你在遷移時的確切內容,很難說更多 - 而且Heroku無論如何都隱藏了許多內部結構。

讓我們弄清楚目前的情況。 嘗試連接psql並運行:

\dp the_problem_table

並顯示報告的permisions。 還顯示結果:

SHOW current_user;

psql運行,並從應用程序內部作為SQL查詢運行。

編輯您的問題以添加該信息以及您獲得的錯誤消息的完整,准確的文本

基於Ashton從Dev(10k行限制)升級到Basic(10M行限制)的答案的步驟

檢查數據庫行超出限制

heroku pg:info

禁用應用程序和工作程序以確保在數據庫升級期間不更改數據庫

heroku maintenance:on
heroku ps:scale worker=0

如果你沒有pgbackups

heroku addons:add pgbackups

備份數據庫並獲取備份ID

heroku pg:backups:capture

使用Web界面添加數據庫

  1. 登錄https://addons.heroku.com
  2. 搜索“Heroku Postgres”
  3. 選擇計划和申請
  4. 添加它

查看heroku配置,您應該看到新的db URL

heroku config --remote heroku

將備份還原到新數據庫

heroku pg:backups:restore BACKUP_ID NEW_DB_URL

更改DATABASE_URL

heroku pg:promote NEW_DB_URL

啟用應用和工作人員

heroku maintenance:off
heroku ps:scale worker=1

刪除多余的行后,您將無法立即獲得插入權限。 在這種情況下,刪除額外的行,然后運行heroku pg:info 這將刷新您的數據庫的權限,您將在幾分鍾內獲得訪問權限。 它不需要將現有數據庫克隆到新數據庫並將新數據庫設置為應用程序的數據庫。

$ 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

我遇到了超出行數限制的情況。

這個答案解釋了如何列出每個表中的行數: http//stackoverflow.com/questions/12701711/heroku-row-count-incorrect

非常有價值的知道。

您可以通過終端進入psql控制台,連接設置列在您的應用程序的heroku儀表板上!

我的Redmine應用程序遇到了類似的問題:

PG::InsufficientPrivilege: ERROR:  permission denied for relation settings
: SELECT  "settings".* FROM "settings"  WHERE "settings"."name" = 'plugin_redmine_wktime' LIMIT 1

我的步驟是:

  1. 我備份了舊的Redmine應用程序和數據庫。
  2. 我部署了一個新版本的Redmine - 它運行得很好
  3. 我將舊的Redmine恢復為開發服務器,當我嘗試訪問主網頁時出現錯誤。

我的問題的原因只是舊Redmine的config / database.yml中的用戶名錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM