3

I use homebrew-postgresql formula to manage multiple Postgresql version. When I tried to run rails db:migrate with :sql as the schema_format, it produced

pg_dump -s -x -O -f /Users/ogirginc/project/blog/db/structure.sql blog_development 

command and failed.

The problem is the version mismatch between the server and the pg_dump client:

pg_dump: server version: 12.2 (Homebrew petere/postgresql); pg_dump version: 10.11 (Homebrew petere/postgresql)
pg_dump: aborting because of server version mismatch
rails aborted!

When I have read the man pages of pg_wrapper as suggested by the author of the formula, my understanding was; the explicit defining PGCLUSTER environment variable like

PGCLUSTER="12/main" rails db:migrate

should have prevented the mismatch error.

When I take a step back and run psql, it printed out the

psql (10.11 (Homebrew petere/postgresql), server 12.2 (Homebrew petere/postgresql))

warning, yet functioning. I was hoping PGCLUSTER="12/main" psql would prevent any warnings but, it didn't. Also, tried brew link -f postgresql@12 but, no luck.

How can I solve this mismatch error between the Postgresql server and its' clients?


Additional info:

$ postgres --version
postgres (PostgreSQL) 10.11 (Homebrew petere/postgresql)

$ brew list | grep postgresql
postgresql-common
postgresql@10
postgresql@11
postgresql@12
[email protected]

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory                        Log file
11  main    5432 online ogirginc /usr/local/var/lib/postgresql/11/main /usr/local/var/log/postgresql/postgresql-11-main.log
12  main    5432 online ogirginc /usr/local/var/lib/postgresql/12/main /usr/local/var/log/postgresql/postgresql-12-main.log

$ pg_config
BINDIR = /usr/local/Cellar/postgresql@10/10.11/bin
DOCDIR = /usr/local/Cellar/postgresql@10/10.11/share/doc
HTMLDIR = /usr/local/Cellar/postgresql@10/10.11/share/doc
INCLUDEDIR = /usr/local/Cellar/postgresql@10/10.11/include
PKGINCLUDEDIR = /usr/local/Cellar/postgresql@10/10.11/include
INCLUDEDIR-SERVER = /usr/local/Cellar/postgresql@10/10.11/include/server
LIBDIR = /usr/local/Cellar/postgresql@10/10.11/lib
PKGLIBDIR = /usr/local/Cellar/postgresql@10/10.11/lib
LOCALEDIR = /usr/local/Cellar/postgresql@10/10.11/share/locale
MANDIR = /usr/local/Cellar/postgresql@10/10.11/share/man
SHAREDIR = /usr/local/Cellar/postgresql@10/10.11/share
SYSCONFDIR = /usr/local/Cellar/postgresql@10/10.11/etc
PGXS = /usr/local/Cellar/postgresql@10/10.11/lib/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--prefix=/usr/local/Cellar/postgresql@10/10.11' '--enable-dtrace' '--enable-nls' '--with-bonjour' '--with-gssapi' '--with-icu' '--with-ldap' '--with-libxml' '--with-libxslt' '--with-openssl' '--with-uuid=e2fs' '--with-pam' '--with-perl' '--with-python' '--with-tcl' 'XML2_CONFIG=:' '--with-includes=/usr/local/opt/gettext/include:/usr/local/opt/icu4c/include:/usr/local/opt/openldap/include:/usr/local/opt/[email protected]/include:/usr/local/opt/readline/include:/usr/local/opt/tcl-tk/include' '--with-libraries=/usr/local/opt/gettext/lib:/usr/local/opt/icu4c/lib:/usr/local/opt/openldap/lib:/usr/local/opt/[email protected]/lib:/usr/local/opt/readline/lib:/usr/local/opt/tcl-tk/lib' '--with-extra-version= (Homebrew petere/postgresql)' 'CC=clang' 'PKG_CONFIG_PATH=/usr/local/opt/e2fsprogs/lib/pkgconfig:/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/[email protected]/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig:/usr/local/opt/tcl-tk/lib/pkgconfig' 'PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig:/usr/local/Homebrew/Library/Homebrew/os/mac/pkgconfig/10.15'
CC = clang
CPPFLAGS = -I/usr/local/Cellar/icu4c/64.2/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -I/usr/local/opt/gettext/include -I/usr/local/opt/icu4c/include -I/usr/local/opt/openldap/include -I/usr/local/opt/[email protected]/include -I/usr/local/opt/readline/include -I/usr/local/opt/tcl-tk/include
CFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2
CFLAGS_SL =
LDFLAGS = -L/usr/local/opt/gettext/lib -L/usr/local/opt/icu4c/lib -L/usr/local/opt/openldap/lib -L/usr/local/opt/[email protected]/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/tcl-tk/lib -Wl,-dead_strip_dylibs
LDFLAGS_EX =
LDFLAGS_SL =
LIBS = -lpgcommon -lpgport -lintl -lxslt -lxml2 -lpam -lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lm
VERSION = PostgreSQL 10.11 (Homebrew petere/postgresql)

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.4
BuildVersion:   19E287

$ echo $0
-zsh

1 Answer 1

3

Should have been more careful because, I was getting a mismatch error for 10.11. However, I wasn't using that version. pg_lsclusters only returns the 11 & 12.

Turns out, a couple of years ago, I have exported postgresql@10 to my PATH. It was causing, pg_wrapper to keep using 10.11 because, I had installed postgresql@10 even though no cluster was created.

I have uninstalled postgresql@10 and updated my .zshrc. Now, all works fine.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.