AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'

6,326 views
Skip to first unread message

Stodge

unread,
Sep 17, 2010, 2:04:04 PM9/17/10
to geodjango
I'm confused; My database settings are:

DATABASES = {
'default': {
'NAME': 'main_db',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'HOST': 'localhost',
'PORT': '5432',
'USER': '###',
'PASSWORD': '###',
},
'euclid': {
'NAME': 'geom_db',
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'HOST': 'localhost',
'PORT': '5432',
'USER': '###',
'PASSWORD': '###',
}
}

main_db is not a postgis database while geom_db is.

I have 'django.contrib.gis' in my settings.py. When I do a syncdb I
get:

AttributeError: 'DatabaseOperations' object has no attribute
'geo_db_type'

Did I miss something?

Stodge

unread,
Sep 17, 2010, 2:32:19 PM9/17/10
to geodjango
Looks like you can't mix and match postgis and non-postgis databases.
Both of my databases have to use the
'django.contrib.gis.db.backends.postgis' engine and both have to be
created as postgis databases or it doesn't work. This doesn't seem
right.

Stodge

unread,
Sep 17, 2010, 8:30:24 PM9/17/10
to geodjango
I changed both datbases to use the postgis backend. Looks like postgis
communicates with the server to retrieve the version of postgis it
uses. But this is causing me a stackdump. Any ideas how to fix this?
Thanks


./manage.py syncdb
Traceback (most recent call last):
File "./manage.py", line 11, in <module>
execute_manager(settings)
File "/usr/lib/python2.6/site-packages/django/core/management/
__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/lib/python2.6/site-packages/django/core/management/
__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python2.6/site-packages/django/core/management/
__init__.py", line 257, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/usr/lib/python2.6/site-packages/django/core/management/
__init__.py", line 67, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name,
name))
File "/usr/lib/python2.6/site-packages/django/utils/importlib.py",
line 35, in import_module
__import__(name)
File "/usr/lib/python2.6/site-packages/South-0.7.1-py2.6.egg/south/
management/commands/__init__.py", line 10, in <module>
import django.template.loaders.app_directories
File "/usr/lib/python2.6/site-packages/django/template/loaders/
app_directories.py", line 21, in <module>
mod = import_module(app)
File "/usr/lib/python2.6/site-packages/django/utils/importlib.py",
line 35, in import_module
__import__(name)
File "/usr/lib/python2.6/site-packages/django/contrib/admin/
__init__.py", line 1, in <module>
from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
File "/usr/lib/python2.6/site-packages/django/contrib/admin/
helpers.py", line 1, in <module>
from django import forms
File "/usr/lib/python2.6/site-packages/django/forms/__init__.py",
line 17, in <module>
from models import *
File "/usr/lib/python2.6/site-packages/django/forms/models.py", line
6, in <module>
from django.db import connections
File "/usr/lib/python2.6/site-packages/django/db/__init__.py", line
75, in <module>
connection = connections[DEFAULT_DB_ALIAS]
File "/usr/lib/python2.6/site-packages/django/db/utils.py", line 92,
in __getitem__
conn = backend.DatabaseWrapper(db, alias)
File "/usr/lib/python2.6/site-packages/django/contrib/gis/db/
backends/postgis/base.py", line 11, in __init__
self.ops = PostGISOperations(self)
File "/usr/lib/python2.6/site-packages/django/contrib/gis/db/
backends/postgis/operations.py", line 91, in __init__
vtup = self.postgis_version_tuple()
File "/usr/lib/python2.6/site-packages/django/contrib/gis/db/
backends/postgis/operations.py", line 447, in postgis_version_tuple
version = self.postgis_lib_version()
File "/usr/lib/python2.6/site-packages/django/contrib/gis/db/
backends/postgis/operations.py", line 427, in postgis_lib_version
return self._get_postgis_func('postgis_lib_version')
File "/usr/lib/python2.6/site-packages/django/contrib/gis/db/
backends/postgis/operations.py", line 408, in _get_postgis_func
cursor = self.connection._cursor()
File "/usr/lib/python2.6/site-packages/django/db/backends/
postgresql_psycopg2/base.py", line 136, in _cursor
self.connection = Database.connect(**conn_params)
psycopg2.OperationalError: FATAL: database "fred" does not exist

Craig de Stigter

unread,
Sep 18, 2010, 12:01:38 AM9/18/10
to geod...@googlegroups.com
If you manually set your POSTGIS_VERSION in settings.py, it won't need to make that connection any more:

--
You received this message because you are subscribed to the Google Groups "geodjango" group.
To post to this group, send email to geod...@googlegroups.com.
To unsubscribe from this group, send email to geodjango+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/geodjango?hl=en.


Ryan Fugger

unread,
Jul 25, 2011, 5:02:25 PM7/25/11
to geod...@googlegroups.com
The solution to this is to make sure models that have geodjango fields in them are not syncing to non-geo databases. 

https://docs.djangoproject.com/en/dev/topics/db/multi-db/#using-routers
Reply all
Reply to author
Forward
0 new messages