GeoDjango:PostgreSQL未运行迁移,对象没有属性'geo_db_type [英] GeoDjango: PostgreSQL not running migrations, object has no attribute 'geo_db_type

查看:225
本文介绍了GeoDjango:PostgreSQL未运行迁移,对象没有属性'geo_db_type的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Django v1.11.5

Django v1.11.5

我正在尝试安装GeoDjango来与GoogleMaps一起玩。

I'm trying to install GeoDjango to play around with GoogleMaps.

我安装了用于MAC的PostgreSQL应用程序,并安装了 pip install psycopg2 。我还使用自制软件安装了GDAL。

I installed PostgreSQL app for MAC and installed pip install psycopg2. I also used home-brew to install GDAL.

编辑 settings.py 添加:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'djangodb',
        'USER': 'admin',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

但是,当我运行 python manage.py migration我得到: AttributeError:'DatabaseOperations'对象没有属性'geo_db_type'

However, when I run python manage.py migrate I get: AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'

我使用以下方法创建了用户:创建数据库djangodb OWNER管理员;

I created the user using:CREATE DATABASE djangodb OWNER admin;

完全错误:


正在运行的迁移:正在应用users.0011_location ... Traceback(最近最近一次调用
):文件 manage.py第22行,在
execute_from_command_line(sys.argv)文件中 /Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/ django / core / management / init .py,
行364,位于execute_from_command_line
utility.execute()文件 / Applications / Anaconda / anaconda / envs / DjangoEnv / lib /python3.6/site-packages/django/core/management/init.py,
行356,在执行
self.fetch_command(subcommand).run_from_argv(self .argv)文件 /Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/core/management/base.py,
行283,位于run_from_argv
中self.execute(* args,** cmd_options)文件 /Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/core/management/base.py\",
行330,在执行
输出= self.handle(* args,** options)文件 /Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/core/management/命令/migrate.py,
行204,句柄
fake_initial = fake_initial,文件 / Applications / Anaconda / anaconda / envs / DjangoEnv / lib / pytho n3.6 / site-packages / django / db / migrations / executor.py,
行115,在迁移
状态= self._migrate_all_forwards(状态,计划,完整计划,fake = fake,fake_initial = fake_initial)文件
/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/migrations/executor.py\",
行145,在_migrate_all_forwards
state = self.apply_migration(状态,迁移,fake = fake,fake_initial = fake_initial)文件
/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/ db / migrations / executor.py,
行244,位于apply_migration
state = migration.apply(state,schema_editor)文件 /Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6 /site-packages/django/db/migrations/migration.py\",
行129,在应用
operation.database_forwards(self.app_label,schema_editor,old_state,project_state)文件
/应用程序/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-package s / django / db / migrations / operations / models.py,
第97行,在database_forwards
schema_editor.create_model(model)文件 / Applications / Anaconda / anaconda / envs / DjangoEnv / lib / python3中.6 / site-packages / django / db / backends / base / schema.py,
第254行,在create_model
定义中,extra_params = self.column_sql(model,field)文件 / Applications / Anaconda / anaconda / envs / DjangoEnv / lib / python3.6 / site-packages / django / db / backends / base / schema.py,
行144,在column_sql
db_params = field.db_parameters( connection = self.connection)文件 /Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/models/fields/init.py,
第662行,在db_parameters中
type_string = self.db_type(connection)File /Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/contrib/gis/db /models/fields.py\",
行126,在db_type
中返回connection.ops.geo_db_type(self)AttributeE rror:'DatabaseOperations'对象没有属性'geo_db_type'

Running migrations: Applying users.0011_location...Traceback (most recent call last): File "manage.py", line 22, in execute_from_command_line(sys.argv) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/core/management/init.py", line 364, in execute_from_command_line utility.execute() File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/core/management/init.py", line 356, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute output = self.handle(*args, **options) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 204, in handle fake_initial=fake_initial, File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 115, in migrate state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 244, in apply_migration state = migration.apply(state, schema_editor) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/migrations/migration.py", line 129, in apply operation.database_forwards(self.app_label, schema_editor, old_state, project_state) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/migrations/operations/models.py", line 97, in database_forwards schema_editor.create_model(model) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 254, in create_model definition, extra_params = self.column_sql(model, field) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 144, in column_sql db_params = field.db_parameters(connection=self.connection) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/models/fields/init.py", line 662, in db_parameters type_string = self.db_type(connection) File "/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/contrib/gis/db/models/fields.py", line 126, in db_type return connection.ops.geo_db_type(self) AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'

我尝试过的类似问题:
在操作时获取 DatabaseOperations对象没有属性 geo_db_type错误:: //stackoverflow.com/questions/12538510/getting-databaseoperations-object-has-no-attribute-geo-db-type-error-when-do同步数据库

Similar questions I tried: Getting 'DatabaseOperations' object has no attribute 'geo_db_type' error when doing a syncdb

推荐答案

您需要更改数据库设置为使用postgis后端,

You need to change your DATABASES setting to use the postgis backend,

'ENGINE': 'django.contrib.gis.db.backends.postgis',

并添加'django.contrib.gis' ,到 INSTALLED_APPS

这篇关于GeoDjango:PostgreSQL未运行迁移,对象没有属性'geo_db_type的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆