Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建扩展插件后,类型几何图形不存在_Python_Django_Postgresql_Postgis_Django Oscar - Fatal编程技术网

Python 创建扩展插件后,类型几何图形不存在

Python 创建扩展插件后,类型几何图形不存在,python,django,postgresql,postgis,django-oscar,Python,Django,Postgresql,Postgis,Django Oscar,创建新的postgres db并加载必要的postgis扩展后 $ createdb demodb $ psql demodb > CREATE EXTENSION postgis; > CREATE EXTENSION postgis_topology; 我获取django.db.utils.ProgrammingError:类型“geometry”不存在运行djangomanage.py migrate时引发异常 在此之后,我尝试在pgadmin中运行失败的查询,结果显示相同

创建新的postgres db并加载必要的postgis扩展后

$ createdb  demodb
$ psql demodb
> CREATE EXTENSION postgis;
> CREATE EXTENSION postgis_topology;
我获取
django.db.utils.ProgrammingError:类型“geometry”不存在
运行django
manage.py migrate时引发异常

在此之后,我尝试在pgadmin中运行失败的查询,结果显示相同:
类型“geometry”不存在

虽然追加
创建扩展postgis在查询似乎解决了这个问题之前,查询返回ok。但是运行
manage.py migrate
时再次抛出相同的异常


加载新扩展不是永久性的吗?如果是这样,我如何永久加载它,以便在运行
migrate
时加载它?

CREATE EXTENSION
对于正在运行它的数据库来说是永久的。它在给定(或当前默认)模式中创建对象

模式名称

如果扩展允许重新定位其内容,则要在其中安装扩展对象的架构的名称。 命名架构必须已存在。若未指定,以及 扩展名的控制文件也没有指定架构,当前 使用默认的对象创建模式

请记住,扩展本身不在任何模式内:扩展具有必须唯一的非限定名称 数据库范围。但是属于扩展的对象可以在 模式

检查
psql
中涉及哪些架构:

\connect mydb
\x 
\dx postgis*
所使用的模式必须在当前的模式中(否则您必须对所有引用进行模式限定)。
我不确定
migrate
是否包含其他模式或扩展。
这很可能是由于
搜索路径的问题

我需要授予数据库用户访问postgis模式的权限。我在连接到django数据库时运行了以下命令,然后migrate成功运行


将SCHEMA postgis上的所有权限授予username

对于我来说,
将模式上的用法授予
解决它(
在我的情况下是
公共的

根据TechnoConserve的建议授予所有特权
,出于安全原因可能太多)