2012-09-22 69 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