2012-09-22 81 views
1

編輯:安裝問題的PostGIS(PostgreSQL的)(Django的)鍵(Mac OS X 10.7)

好吧,我卸載我有,並根據下列方向重新安裝的版本:

我跑:

POSTGIS_SQL_PATH=/usr/local/Cellar/postgis15/1.5.3/share/postgis 
# Creating the template spatial database. 
createdb -E UTF8 template_postgis 
createlang -d template_postgis plpgsql # Adding PLPGSQL language support. 
# Allows non-superusers the ability to create from this template 
psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';" 
# Loading the PostGIS SQL routines 
psql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql 
psql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql 
# Enabling users to alter spatial tables. 
psql -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;" 
psql -d template_postgis -c "GRANT ALL ON geography_columns TO PUBLIC;" 
psql -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;" 

然後跑:

$ createdb -T template_postgis newdb 
$ createuser --createdb poop 
Shall the new role be a superuser? (y/n) y 

現在,這裏是我得到我的數據庫列表:

$ psql -l 
            List of databases 
     Name  | Owner | Encoding | Collation | Ctype | Access privileges 
------------------+-------+----------+-------------+-------------+------------------- 
newdb   | User | UTF8  | en_US.UTF-8 | en_US.UTF-8 | 
postgres   | User | UTF8  | en_US.UTF-8 | en_US.UTF-8 | 
template0  | User | UTF8  | en_US.UTF-8 | en_US.UTF-8 | =c/User   + 
        |  |   |    |    | User=CTc/User 
template1  | User | UTF8  | en_US.UTF-8 | en_US.UTF-8 | =c/User   + 
        |  |   |    |    | User=CTc/User 
template_postgis | User | UTF8  | en_US.UTF-8 | en_US.UTF-8 | 
(5 rows) 

確保我的版本是正確的:

$ psql newdb 
psql (9.0.8) 
Type "help" for help. 

newdb=# SELECT PostGIS_full_version(); 
             postgis_full_version          
-------------------------------------------------------------------------------------------------- 
POSTGIS="1.5.3" GEOS="3.3.5-CAPI-1.7.5" PROJ="Rel. 4.8.0, 6 March 2012" LIBXML="2.7.3" USE_STATS 
(1 row) 

newdb=# \dt 
     List of relations 
Schema |  Name  | Type | Owner 
--------+------------------+-------+------- 
public | geometry_columns | table | User 
public | spatial_ref_sys | table | User 
(2 rows) 

它看起來像所有相關性的照顧和數據庫看上去很幸福,一切看起來乾淨! (但是,如果是我磨碎的所有用戶訪問上面的geograph_colums?)

現在,settings.py:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.contrib.gis.db.backends.postgis', 
     'NAME': 'newdb', 
     'USER': 'poop', # yes, I named my user poop 
    } 
} 

現在,當我運行:

$ python manage.py syncdb 

我打通一個鏈接的各種文件結尾爲:

psycopg2.OperationalError: could not connect to server: Permission denied 
Is the server running locally and accepting 
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? 

顯然我的數據庫正在運行,因爲我可以psql進入它。但是權限設置不正確?

的pg_hba.conf:

# TYPE DATABASE  USER   CIDR-ADDRESS   METHOD 

# "local" is for Unix domain socket connections only 
local all    all          trust 
# IPv4 local connections: 
host all    all    127.0.0.1/32   trust 
# IPv6 local connections: 
host all    all    ::1/128     trust 

答: Postgresql socket error on OSX 10.7.3 when running Django's syncdb

回答

1

我不知道,如果目前的Django的版本是在PostGIS 2.0兼容。您可能想嘗試安裝PostGIS 1.5。這也意味着安裝PostgreSQL 9.0。這兩個包都是自制的,但你需要「挖掘」版本的公式:

​​

然後,您需要更改默認postgis15包指向postgresql9(最近的postgresql包的更新後的它postgis15不相容的,公式尚未更新):

brew edit postgis15 

更改兩個postgresql實例postgresql9,如:

第12行:

depends_on 'postgresql9' 

第30行:

postgresql = Formula.factory 'postgresql9' 

然後安裝postgis15:

brew install postgis15 

,並像之前建立相關數據庫。

請注意,psql和Python psycopg2軟件包正在連接到正確的數據庫(postgres 9.0)。 psycopg2還需要針對正確的庫進行編譯。確保這一點的最簡單方法是先卸載從自制的postgresql包(如果你不使用它爲別的),移動/usr/local/var/postgres數據目錄的方式進行,在安裝之前postgis15:

brew uninstall postgresql 
mv /usr/local/var/postgres /usr/local/var/postgres9.1 
initdb /usr/local/var/postgres -E utf8 
brew install postgresql9 

。 ..和重新編譯psycopg2針對新庫(到您的virtualenv):

pip uninstall psycopg2 
pip install psycopg2 

這可能沒有幫助,但它總是很好用已知的工作版本,除非你願意嘗試,調試和提交補丁:-)

+0

謝謝你,這真的很有幫助。不過,現在我有一個新的錯誤,所有新的相關信息的完整編輯如上。我想我正在接近(當然有你的幫助!)我想避免修補程序/排除故障新版本XD看到我已經拉着頭髮做最簡單的事情。 – thattookawhile