【问题标题】:After a PostgreSQL restore, I get "permission denied for relation django_session"PostgreSQL 还原后,我得到“关系 django_session 的权限被拒绝”
【发布时间】:2011-01-19 03:27:12
【问题描述】:

我目前在实时服务器和本地运行我的 Django 1.1.1 站点和 PostgreSQL 8.4.2。当我尝试从本地机器上的实时服务器恢复我的备份之一时,在本地访问我的站点时出现以下错误(http://localhost:8000):

Exception Type: ProgrammingError at /
Exception Value: permission denied for relation django_session

在访问我的一个模型的所有内容时,我也遇到了类似的错误:

$ python manage.py shell
Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from myapp.models import MyModel
>>> MyModel.objects.all()
...
ProgrammingError: permission denied for relation myapp_mymodel

我使用pg_dump 在实时服务器上进行备份并删除我的本地数据库,然后使用psql dbname < infile 进行恢复。有谁知道怎么回事?

【问题讨论】:

    标签: django postgresql


    【解决方案1】:

    我尝试为具有 SUPERUSER 属性的用户的所有角色。它有效。

    ALTER ROLE your_role SUPERUSER;
    

    【讨论】:

      【解决方案2】:

      1) 创建转储数据库

      $ pg_dump -Fc mydb > db.dump
      

      2) 删除数据库

      $ dropdb mydb
      

      3) 从转储中重新创建它

      $ pg_restore -C -d postgres db.dump
      

      【讨论】:

        【解决方案3】:

        当以同一用户(Django 连接的用户)使用 psql 连接时,您是否会遇到相同的错误?或者您的实时站点和本地计算机上是否有相同的 PostgreSQL 用户?如果没有,您应该使用 -Ox(或 --no-owner)选项转储/重新加载以跳过所有权命令。

        【讨论】:

        • 我的实时站点上没有与本地计算机相同的 PostgreSQL 用户。我尝试使用 -Ox 进行转储/重新加载,但现在我得到一个不同的错误:关系“django_site”不存在第 1 行:...“django_site”.“domain”,“django_site”。“name” FROM “django_si. ..” 对这里可能发生的事情有任何想法吗?谢谢!
        • @mkelley33:您是否找到了出现此新错误的原因以及如何解决?是否与运行syncdb 有关?任何提示将不胜感激,因为我现在在同一条船上。
        猜你喜欢
        • 2014-08-19
        • 2014-04-30
        • 2013-03-09
        • 2018-07-02
        • 2019-12-18
        • 2016-02-25
        • 2016-02-21
        • 2020-06-13
        • 1970-01-01
        相关资源
        最近更新 更多