首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个数据库的GeoDjango检查数据库

具有多个数据库的GeoDjango检查数据库
EN

Stack Overflow用户
提问于 2019-04-09 19:22:30
回答 1查看 317关注 0票数 1

我正在尝试在带有Postgis的PostgreSQL数据库上运行inspectdb

要为postgresql视图生成模型,我发现here应该使用以下命令:

代码语言:javascript
复制
python manage.py inspectdb --database my_schema my_view> my_view_legacy.py

但是由于有了PostGIS,inspectdb还会尝试访问另一个模式中的视图,这在my_view中遇到geometry类型的字段时会引发以下错误

代码语言:javascript
复制
django.db.utils.ProgrammingError: relation "geometry_columns" does not exist
LINE 1: SELECT "coord_dimension", "srid", "type" FROM "geometry_colu...

这看起来像一个catch-22:如果我指定数据库名称,以便inspectdb知道要检查哪个视图,它将无法在public模式中找到geometry_columns视图。但是如果我不指定任何数据库名称,它就不能在第一个地方找到my_view

对此有什么解决方案吗?

我的数据库模式定义如下:

代码语言:javascript
复制
DATABASES = {

    'default': 
            {
            },

    'public': 
            {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'OPTIONS': {
                            'options': '-c search_path=public'
                        },
            'NAME': 'my_db',
            'USER': secrets.USER,
            'PASSWORD': secrets.PASSWORD,
            'HOST': 'my.host.addr',
            'PORT': '5432',
            },

    'my_schema': 
            {
            'ENGINE': 'django.contrib.gis.db.backends.postgis', 
            'OPTIONS': {
                            'options': '-c search_path=my_schema'
                        },
            'NAME': 'my_db',
            'USER': secrets.USER,
            'PASSWORD': secrets.PASSWORD,
            'HOST': 'my.host.addr',
            'PORT': '5432',
            },    
}
EN

回答 1

Stack Overflow用户

发布于 2021-09-20 19:17:14

我在指定的模式中复制了geometry_columnsgeography_columns,以便GeoDjango可以找到它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55591689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档