psql: symbol lookup error: psql: undefined symbol: PQsetErrorContextVisibility

Brandon picture Brandon · Sep 12, 2018 · Viewed 11k times · Source

I switched my postgres version from 9.2.24 to 9.6 because I need jsonb compatibility along with other recent features. I am running a vm on centos 7.

I decided to wipe all existing instances of postgres (which are almost empty since it is staging) and then installed 9.6. However, once I enter the postgres shell I received the following error when I type psql:

psql: symbol lookup error: psql: undefined symbol: PQsetErrorContextVisibility

I assume I need to change the path that psql is looking for so that it connects properly but I am not sure where to point it.

Note: ls reveals 2 directories and 1 file in postgres bash 9.6 data and initdb.log.

Answer

Evan Carroll picture Evan Carroll · Sep 12, 2018

psql: symbol lookup error: psql: undefined symbol: PQsetErrorContextVisibility

That means your copy of psql is looking for a dynamic symbol in libpq.so which the version in your path does not have.

Do you have a custom compiled version of psql? And, if so, you'll have to build it against the newer libpq that 9.6 provides.