2014-05-06 24 views
3

我已經安裝了Geodjango的所有依賴!現在,我下面的教程其https://docs.djangoproject.com/en/1.2/ref/contrib/gis/tutorial/ - 問題:命令python manage.py執行syncdb在mpoly geometry(multipolygon 4326) not null that geometry does not exist幾何不存在於GEODJANGO

​​

產生錯誤如何解決這個問題?

UPDATE:

python manage.py sqlall world產生以下輸出:

BEGIN; 
CREATE TABLE "world_worldborders" (
    "id" serial NOT NULL PRIMARY KEY, 
    "name" varchar(50) NOT NULL, 
    "area" integer NOT NULL, 
    "pop2005" integer NOT NULL, 
    "fips" varchar(2) NOT NULL, 
    "iso2" varchar(2) NOT NULL, 
    "iso3" varchar(3) NOT NULL, 
    "un" integer NOT NULL, 
    "region" integer NOT NULL, 
    "subregion" integer NOT NULL, 
    "lon" double precision NOT NULL, 
    "lat" double precision NOT NULL, 
    "mpoly" geometry(MULTIPOLYGON,4326) NOT NULL 
) 
; 
CREATE INDEX "world_worldborders_mpoly_id" ON "world_worldborders" USING GIST ("mpoly"); 

COMMIT; 

python manage.py syncdb生成:Program Error Geometry Doesn't exist

[email protected]:~/geodjango# python manage.py syncdb Syncing... Creating tables ... Creating table django_admin_log Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_groups Creating table auth_user_user_permissions Creating table auth_user Creating table django_content_type Creating table django_session Creating table world_worldborders Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 242, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 285, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 415, in handle return self.handle_noargs(**options) File "/usr/local/lib/python2.7/dist-packages/south/management/commands/syncdb.py", line 92, in handle_noargs syncdb.Command().execute(**options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 285, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 415, in handle return self.handle_noargs(**options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/syncdb.py", line 107, in handle_noargs cursor.execute(statement) File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 69, in execute return super(CursorDebugWrapper, self).execute(sql, params) File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 53, in execute return self.cursor.execute(sql, params) File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 99, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 51, in execute return self.cursor.execute(sql) django.db.utils.ProgrammingError: type "geometry" does not exist LINE 14: "mpoly" geometry(MULTIPOLYGON,4326) NOT NULL

+1

你解決呢?你會和我們分享嗎? Thx – Armance

回答

0

這裏是固定的票,

https://code.djangoproject.com/ticket/21547

更新GeoDjango教程在PostGIS 2輸出

+0

在發佈問題之前,我讀了這個,但我不明白那張票。你能解釋一下解決這個問題的步驟嗎? –

+0

試試這個'python管理。py sqlall world'並在你的問題中發佈輸出 – dhana

+0

'django.core.exceptions.ImproperlyConfigured:無法確定數據庫「geodjango」的PostGIS版本。 GeoDjango至少需要PostGIS版本1.3。是從空間數據庫模板創建的數據庫?@dhana ' –

5

幾件事情來檢查:

  • 您已經運行CREATE EXTENSION postgis;
  • 的GEOS_LIBRARY_PATH設置在項目的設置。 py文件

This第二點給我帶來了一些麻煩,儘管這是第一個終於做到了的伎倆。我在Cygwin 64位上運行它,所以需要做一些額外的工作才能使它工作。如果您沒有在Cygwin環境中運行,則最有可能您要查找的文件是libgeos_c.so;我需要將它指向cyggeos_c-1.dll(仍然在Windows上運行,因此.dll擴展名是我需要查找的)。

我確信我已經運行了CREATE EXTENSION命令,但我可能沒有在Cygwin環境中運行它。或者我已經嘗試過,但沒有記住我有一個配置的噩夢,使postgres服務器不在本地主機上運行,​​所以我避免了psql。這是我自己的厚度品牌。

0

在我的情況的問題是,該命令:

-- Enable PostGIS (includes raster) 
CREATE EXTENSION postgis; 
-- Enable Topology 
CREATE EXTENSION postgis_topology; 
-- fuzzy matching needed for Tiger 
CREATE EXTENSION fuzzystrmatch; 
-- Enable US Tiger Geocoder 
CREATE EXTENSION postgis_tiger_geocoder; 

shoudl在某些數據庫的上下文中運行,所以你需要連接到your_db第一:

\connect your_db 

,然後上面運行!

0

嘗試添加

objects = models.GeoManager()

mpoly後

在你的models.py

+0

你應該[編輯]你的答案來添加一個描述*如何*這回答了這個問題。 –