Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save niquepa/adb336853d08fcad5272cd83e4148854 to your computer and use it in GitHub Desktop.
Save niquepa/adb336853d08fcad5272cd83e4148854 to your computer and use it in GitHub Desktop.
Upgrade PostgreSQL 9.6.5 to 10.0 using Homebrew (macOS)

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 [email protected] brew unlink [email protected] 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/[email protected]/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 [email protected] 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