我目前正在实时服务器和本地运行带有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
进行还原。有谁知道什么是错的?
答案 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;