brew install postgresql brew services start postgresql initdb /usr/local/var/postgres
Manual steps (handled by brew services start):
brew services start
# Tell launchd start postgresql at login ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents # To load pg now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist # If you don't want launchctl: postgres -D /usr/local/var/postgres # Finally createdb
If you run into the error:
PGError: ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) HINT: Use the same encoding as in the template database, or use template0 as template.
To fix this, do the following from psql prompt:
UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1'; DROP DATABASE template1; CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE'; UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1'; \c template1 VACUUM FREEZE;
If you see this error: FATAL: role "postgres" does not exist
FATAL: role "postgres" does not exist
CREATE USER postgres SUPERUSER;
I was using 9.5.3 and upgrading to 9.6.1.
initdb /usr/local/var/postgres9.6 -E utf8 pg_upgrade \ -d /usr/local/var/postgres \ -D /usr/local/var/postgres9.6 \ -b /usr/local/Cellar/postgresql/9.5.3/bin/ \ -B /usr/local/Cellar/postgresql/9.6.1/bin/ \ -v mv /usr/local/var/postgres /usr/local/var/postgres9.5 mv /usr/local/var/postgres9.6 /usr/local/var/postgres launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist gem uninstall pg bundle install