GeoDjango:PostgreSQL未运行迁移,对象没有属性'geo_db_type [英] GeoDjango: PostgreSQL not running migrations, object has no attribute '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屋!