【发布时间】:2011-12-29 16:00:25
【问题描述】:
你的期望::
settings.py
DATABASES = {
'default': {
'NAME': 'db_name',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': 'user',
'PASSWORD': 'password',
'HOST': 'host',
'PORT': '5432',
'DEFAULT_TABLESPACE': 'tablespace-name',
}
}
当我使用 DEFAULT_TABLESPACE 时,我希望使用此默认表空间授予访问权限。但我在那里使用什么并不重要。另外,如果我在模型元类中明确使用 db_tablespace,就我所知,它不会做任何事情。
我也尝试过不同的用户,但即使用户 postgres 也不起作用。如果我定义 db_table = "tablespace.tablename",它也不起作用。
有效的 SQL:
select count(*) from schemaname.tablename
我对数据库进行了备份并在本地恢复它,但没有创建表空间。它很好地导入并忽略了表空间。然后它就可以工作了。
如何使用带有表空间的 postgres 配置 Django?还是模式名??其实我什么都不懂,希望大家帮帮我。
另请参阅:https://docs.djangoproject.com/en/dev/topics/db/tablespaces/
使用 Django 1.3.1、postgresql 8.4、psycopg2
更新:
使用表空间时似乎没有选择“默认模式”。我尝试了一些测试,下面是使用 ./manage.py dbshell 的结果:
这确实适用于我没有表空间的数据库,但不适用于有表空间的数据库:
select * from parameter;
这对两个数据库都有效:
select * from tablespace.parameter;
不幸的是,数据库设置中的选项“DATABASE_SCHEMA”不起作用,模型元对象中的“db_schema”也不起作用。所以问题现在有点清楚了。有没有人可以解决这个问题?
【问题讨论】:
-
表空间支持在 Django 1.3.1 中不可用。它将被添加到即将发布的 Django 1.4 中。
-
谢谢,我停止寻找解决方案并要求数据库所有者更改表空间:-)
标签: python django postgresql settings psycopg2