PostgreSQL恢复后,我得到“关系django_session的权限被拒绝”

时间:2010-02-20 15:08:13

标签: django postgresql

我目前正在实时服务器和本地运行带有PostgreSQL 8.4.2的Django 1.1.1站点。当我尝试从本地服务器上的实时服务器恢复其中一个备份时,我在本地访问我的网站时遇到以下错误(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 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:0)

1)创建转储数据库

$ pg_dump -Fc mydb > db.dump

2)删除数据库

$ dropdb mydb

3)从转储中重新创建

$ pg_restore -C -d postgres db.dump

答案 2 :(得分:0)

我尝试使用具有属性SUPERUSER的所有用户角色。可以。

ALTER ROLE your_role SUPERUSER;