Tôi đang cố gắng để chạy heroku run python manage.py syncdb
trên ứng dụng GeoDjango tôi trên Heroku, nhưng tôi nhận được lỗi sau:Bắt đối tượng 'DatabaseOperations' không có thuộc tính lỗi 'geo_db_type' khi làm một syncdb
AttributeError: 'DatabaseOperations' đối tượng không có thuộc tính 'geo_db_type'
Allofmyresearch đã mang lại cùng một giải pháp: hãy chắc chắn để sử dụng django.contrib.gis.db.backends.postgis
như cơ sở dữ liệu. Điều buồn cười là Tôi đã làm điều này (và tôi cũng có django.contrib.gis
trong INSTALLED_APPS
):
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': '...',
'HOST': '...',
'PORT': ...,
'USER': '...',
'PASSWORD': '...'
}
}
INSTALLED_APPS = (
...,
'django.contrib.gis',
)
Có cái gì khác tôi đang thiếu? Any help is appreciated rất nhiều, dưới đây là dấu vết lỗi đầy đủ để tham khảo:
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'
Cập nhật: Tôi làm theo các GeoDjango tutorial và Heroku/Django tutorial, và xây dựng một ứng dụng đơn giản mà làm việc trên máy dev của tôi. Tôi đã đẩy nó vào Heroku bằng cách sử dụng một custom GeoDjango buildpack và đã thử syncdb, nhưng nhận được cùng một lỗi. Đây có phải là vấn đề với Django/GeoDjango, Heroku hoặc buildpack không? Môi trường dev của tôi đang sử dụng PostgreSQL 9.1 và PostGIS 2.0, nhưng Heroku sử dụng 9.0.9 và 1.5, đó có phải là vấn đề không?
tôi vẫn gặp lỗi này sau khi sử dụng gói xây dựng tùy chỉnh. – limovala
Trong khi câu hỏi là Heroku cụ thể, tiêu đề là khá chung chung. Vấn đề cũng có thể phát sinh nếu Django DATABASES ENGINE không được đặt thành django.contrib.gis.db.backends.postgis –