安装了Postgis扩展程序:
:DATABASE=> SELECT postgis_version();
postgis_version
2.2 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
我有以下构建包:
当我运行manage.py migrate时,我得到:
AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'
我正在使用现在支持postgis的业余爱好deb postgres https://devcenter.heroku.com/changelog-items/792
我是否需要安装其他构建包或添加一些其他配置?一切都在本地使用postgis。
答案 0 :(得分:1)
我终于有时间回去看看这个。事实证明问题是Heroku没有正确导入我的设置。我正在使用cookiecutter-django设置方案,将常用设置导入生产中,并且由于某些原因,Heroku没有按预期工作。
我的常用设置包含:
DATABASES['default']['ATOMIC_REQUESTS'] = True
DATABASES['default']['ENGINE'] = "django.contrib.gis.db.backends.postgis"
我的作品包含:
DATABASES['default'] = env.db("DATABASE_URL")
Heroku没有导入这些常用设置。当我在heroku中检查django shell时,生产设置已经
'ENGINE': 'django.db.backends.postgresql_psycopg2', 'ATOMIC_REQUESTS': False
将DATABASES ['default'] ['ENGINE'] =“django.contrib.gis.db.backends.postgis”添加到生产设置后,一切正常。
有人知道从common.py正确导入设置会出现什么问题吗?它似乎正确导入其余设置,而不是数据库。
答案 1 :(得分:0)
我也有这个问题!
我注意到the environment var for the PostGreSQL server had postgres
inside of it,
我认为用postgis
替换它会有效。
奇怪的是,这对我有用。
if 'DATABASE_URL' in os.environ: # please help me heroku gods
if 'postgres' in os.environ['DATABASE_URL']:
os.environ['DATABASE_URL'] = os.environ['DATABASE_URL'].replace('postgres', 'postgis')
它只是将环境变量替换为其中包含postgis
的变量。