我试图heroku run python manage.py syncdb在Heroku的我的GeoDjango应用程序上运行,但出现以下错误:
heroku run python manage.py syncdb
AttributeError:“ DatabaseOperations”对象没有属性“ geo_db_type”
我所有的 研究都得出了相同的解决方案:确保用作数据库引擎。有趣的是,我已经这样做了(我也有在): django.contrib.gis.db.backends.postgisdjango.contrib.gisINSTALLED_APPS
django.contrib.gis.db.backends.postgisdjango.contrib.gisINSTALLED_APPS
settings.py DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', 'NAME': '...', 'HOST': '...', 'PORT': ..., 'USER': '...', 'PASSWORD': '...' } } INSTALLED_APPS = ( ..., 'django.contrib.gis', )
还有其他我想念的东西吗?非常感谢您的帮助,以下是完整的错误跟踪供参考:
Running `python manage.py syncdb` attached to terminal... up, run.1 Creating tables ... Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_user_permissions Creating table auth_user_groups Creating table auth_user Creating table django_content_type Creating table django_session Creating table django_site Creating table django_admin_log Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line utility.execute() File "/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/app/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv self.execute(*args, **options.__dict__) File "/app/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute output = self.handle(*args, **options) File "/app/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle return self.handle_noargs(**options) File "/app/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 91, in handle_noargs sql, references = connection.creation.sql_create_model(model, self.style, seen_models) File "/app/lib/python2.7/site-packages/django/db/backends/creation.py", line 44, in sql_create_model col_type = f.db_type(connection=self.connection) File "/app/lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py", line 200, in db_type return connection.ops.geo_db_type(self) AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'
该OP是使用GeoDjango内置buildpack,但如果有人在这里得到使用地理buildpack和dj_database_url喜欢我,在settings.py不要忘记最后一行:
buildpack
buildpack和dj_database_url
settings.py
import dj_database_url DATABASES['default'] = dj_database_url.config() DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'
更新
dj_database_url直接支持 PostGIS。如果可以将数据库URL更改为以开头,则可以不用上面代码的最后一行postgis。
dj_database_url
postgis