Getting 'DatabaseOperations' object has no attribute 'geo_db_type' error when doing a syncdb
The OP was using the GeoDjango buildpack, but in case anyone gets here using Geo buildpack and dj_database_url
like I was, in settings.py
don't forget the last line:
import dj_database_url
DATABASES['default'] = dj_database_url.config()
DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'
UPDATE
dj_database_url
directly supports PostGIS. You can do without the last line in the code above if you can change your database URL to start with postgis
.
I got this error when trying to run tests with the test db set like so:
if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '_testdb',
}
}
Problem being that the sqlite3 DatabaseOperations
object doesn't have the attribute geo_db_type
(like the title of this post suggests).
My solution was to change the backend to the sqlite equivalent GIS engine:
'ENGINE': 'django.contrib.gis.db.backends.spatialite'
See the django docs on geodjango installation for all the possible backends, with installation instructions: https://docs.djangoproject.com/en/3.0/ref/contrib/gis/install/#spatial-database
I was having the same problem and I had to change:
'ENGINE': 'django.db.backends.postgresql_psycopg2',
to:
'ENGINE': 'django.contrib.gis.db.backends.postgis',