1

EDIT:

Ok, I uninstalled the versions that I had and reinstalled according to the directions listed below:

I ran:

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;" 

then ran:

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

Now Here is what I get for my db list:

$ 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)

Making sure my version is correct:

$ 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)

It looks like all dependencies are taken care of and the database looks happy, everything looks clean! (However, where is the geograph_colums I grated all users access to above?)

Now, settings.py:

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

now when I run:

$ python manage.py syncdb

I get a link through of various files ending with:

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"?

Obviously my db is running because I can psql into it. However are permissions set up incorrectly?

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

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

Community
  • 1
  • 1
bllchmbrs
  • 13
  • 4

1 Answers1

1

I'm not sure if the current Django release is compatible with PostGIS 2.0. You might like to try installing PostGIS 1.5. This may also mean installing PostgreSQL 9.0. Both these packages are in homebrew, but you need to "tap" the versions formulae:

brew update
brew tap homebrew/versions
brew install postgresql9

You'll then need to change the default postgis15 package to point to postgresql9 (the most recent update of the postgresql package made it incompatible with postgis15, and the formula hasn't been updated yet):

brew edit postgis15

Change the two instances of postgresql to postgresql9, eg:

Line 12:

depends_on 'postgresql9'

Line 30:

postgresql = Formula.factory 'postgresql9'

Then install postgis15:

brew install postgis15

and create the relevant databases as you did before.

Be careful that psql and the Python psycopg2 package are connecting to the correct database (postgres 9.0). psycopg2 additionally needs to be compiled against the correct libraries. The easiest way to ensure this is to uninstall the postgresql package from homebrew first (if you aren't using it for anything else) and move the /usr/local/var/postgres data directory out of the way, before installing postgis15:

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

... and recompiling psycopg2 against the new libraries (into your virtualenv):

pip uninstall psycopg2
pip install psycopg2

This may not help, but it's always good to use versions that are known to work, unless you're willing to experiment, debug and submit patches :-)

Will Hardy
  • 14,588
  • 5
  • 44
  • 43
  • Thanks a ton, this really helped. However now I have a new error, the full edit with all the new relevant info is above. I think I'm getting close (of course with your help!) I'd like to avoid patches/troubleshooting new versions XD seeing as I'm already pulling my hair our doing the simplest of things. – bllchmbrs Sep 22 '12 at 22:52