Skip to content

Instantly share code, notes, and snippets.

@iver
Forked from giannisp/gist:ebaca117ac9e44231421f04e7796d5ca
Last active June 7, 2018 14:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iver/d105e7e8e7f05eb7e11fa790f9989641 to your computer and use it in GitHub Desktop.
Save iver/d105e7e8e7f05eb7e11fa790f9989641 to your computer and use it in GitHub Desktop.
Upgrade PostgreSQL 9.6.5 to 10.0 using Homebrew (macOS)

NOTES: After automatically updating Postgres to 10.0 via Homebrew, the pg_ctl start command didn't work. The error was "The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.0."

Database files have to be updated before starting the server, here are the steps that had to be followed:

  • Need to have both 9.6.x and latest 10.0 installed, and keep 10.0 as default
brew unlink postgresql
brew install postgresql@9.6
brew unlink postgresql@9.6
brew link postgresql
  • Move 9.6.x db files to another directory
mv /usr/local/var/postgres /usr/local/var/postgres96
  • init new database using 10.0 initdb /usr/local/var/postgres -E utf8

  • make timezone and timezonesets directories available for 9.6.x installation

mkdir /usr/local/share/postgresql96
cp -r /usr/local/share/postgresql/timezone /usr/local/share/postgresql96
cp -r /usr/local/share/postgresql/timezonesets /usr/local/share/postgresql96
  • Finally the actual upgrade:
# -b is the old binary dir, -B is the new binary dir
# -d is the old data dir, -D is the new data dir
pg_upgrade -b /usr/local/Cellar/postgresql@9.6/9.6.5/bin -B /usr/local/Cellar/postgresql/10.0/bin -d /usr/local/var/postgres96 -D /usr/local/var/postgres
  • Start 10.0 to check that upgrade works:
pg_ctl start -D /usr/local/var/postgres
  • cleanup if upgrade was successful
brew uninstall postgresql@9.6
rm -rf /usr/local/var/postgres96
rm -rf /usr/local/share/postgresql96
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment