在进行PostgreSQL恢复后,我收到了“permission denied for relation django_session”的提示。

10

我目前在本地和服务器上都使用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 进行还原。有人知道是什么问题吗?

3个回答

13

当使用与Django连接的相同用户(PostgreSQL用户)连接psql时,是否出现相同的错误?或者你的线上网站和本地机器上有相同的PostgreSQL用户吗?如果没有,你应该使用-Ox(或--no-owner)选项进行dump/reload以跳过所有拥有权命令。


1
我的生产环境和本地机器上的PostgreSQL用户不同。我尝试使用-Ox进行转储/重新加载,但现在出现了不同的错误:关系“django_site”不存在 第1行:“...”django_site”。“domain”,“django_site”。“name” FROM“django_si…”这里可能发生了什么?谢谢! - mkelley33
@mkelley33:你找到为什么会出现这个新错误以及如何解决它了吗?这与运行syncdb有关吗?如果有任何提示,将不胜感激,因为我现在也遇到了同样的问题。 - Hassan Baig

1

我尝试使用您的用户角色,将其设置为SUPERUSER属性。它可以正常工作。

ALTER ROLE your_role SUPERUSER;

0

1)创建数据库备份

$ pg_dump -Fc mydb > db.dump

2) 删除数据库

$ dropdb mydb

3) 从转储文件中重新创建它

$ pg_restore -C -d postgres db.dump

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接