GeoDjango:PostgreSQL没有运行迁移,对象没有属性'geo_db_type
Posted
技术标签:
【中文标题】GeoDjango:PostgreSQL没有运行迁移,对象没有属性\'geo_db_type【英文标题】:GeoDjango: PostgreSQL not running migrations, object has no attribute 'geo_db_typeGeoDjango:PostgreSQL没有运行迁移,对象没有属性'geo_db_type 【发布时间】:2018-02-14 23:24:37 【问题描述】:Django v1.11.5
我正在尝试安装 GeoDjango 以使用 GoogleMaps。
我为 MAC 安装了 PostgreSQL 应用程序并安装了pip install psycopg2
。我还使用自制软件安装了GDAL。
编辑 settings.py 以添加:
DATABASES =
'default':
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'djangodb',
'USER': 'admin',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '5432',
但是,当我运行 python manage.py
migrate 时,我得到:AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'
我使用以下方式创建了用户: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/commands/migrate.py”, 第 204 行,在句柄中 fake_initial=fake_initial,文件“/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/migrations/executor.py”, 第 115 行,在迁移中 state = self._migrate_all_forwards(state, plan, full_plan, 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(state, 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) 文件 “/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/db/migrations/operations/models.py”, 第 97 行,在 database_forwards 中 schema_editor.create_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(模型,字段)文件“/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) 文件“/Applications/Anaconda/anaconda/envs/DjangoEnv/lib/python3.6/site-packages/django/contrib/gis/db/models/fields.py”, 第 126 行,在 db_type 中 return connection.ops.geo_db_type(self) AttributeError: 'DatabaseOperations' 对象没有属性 'geo_db_type'
我尝试过的类似问题: Getting 'DatabaseOperations' object has no attribute 'geo_db_type' error when doing a syncdb
【问题讨论】:
您链接到this question,但您的DATABASES
设置中有django.db.backends.postgresql
而不是django.contrib.gis.db.backends.postgis
。
非常感谢。现在似乎正在运行迁移。我已经尝试过 django.db.backends.postgresql_psycopg2 和问题中列出的那个,都出现错误。我什至创建了新的虚拟环境来测试。再次感谢!
【参考方案1】:
您需要更改 DATABASES
设置以使用 postgis 后端,
'ENGINE': 'django.contrib.gis.db.backends.postgis',
并将'django.contrib.gis'
添加到INSTALLED_APPS
。
【讨论】:
以上是关于GeoDjango:PostgreSQL没有运行迁移,对象没有属性'geo_db_type的主要内容,如果未能解决你的问题,请参考以下文章
带有 Postgis Geodjango 安装的 Postgresql