Upcoming and OnDemand Webinars View full list

Howto: PostgreSQL on Leopard gotchas

Andre

For a recent Rails project, I had to use PostgreSQL instead of the standard MySQL for the database. Setting up Postgres on Mac OS 10.5 has some quirks, which I will share with you here.

1) install Postgres as root

2) after install, from the command line: chown -R andre /usr/local/pgsql/data. The -r flag changes the ownership recursively. Obviously, substitute your own username for “andre” in the example.

  • Since I don’t use PostGres all the time, I don’t want it to be started up automatically. Instead, I set up two aliases in by .bashrc:

alias startpostgres=’/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile start’ alias stoppostgres=’/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile stop’

  • when you start postgres, you’ll probably get the dreaded “shared memory error,” which looks like this:

FATAL: could not create shared memory segment: Cannot allocate memory DETAIL: Failed system call was shmget(key=1, size=1081344, 03600). HINT: This error usually means that PostgreSQL’s request for a shared memory segment exceeded available memory or swap space. To reduce the request size (currently 1081344 bytes), reduce PostgreSQL’s shared_buffers parameter (currently 50) and/or its max_connections parameter (currently 10).

  • some resources will tell you to edit the /etc/rc file, which is incorrect for Leopard. Instead, create /etc/sysctl.conf (if it does not already exist – mine didn’t), and add the following lines:

kern.sysv.shmmax=167772160 kern.sysv.shmmin=1 kern.sysv.shmmni=32 kern.sysv.shmseg=8 kern.sysv.shmall=65536

You’ll need to su to root to create /etc/rc

Have fun with Postgres!

Not Happy with Your Current App, or Digital Product?

Submit your event

Let's Discuss Your Project

Let's Discuss Your Project