我正在嘗試在 Amazon Linux AMI 上運行的 PostgreSQL 資料庫上啟用 hstore。我已經克服了很多障礙,最後遇到了這個我無法克服的錯誤:
ERROR: could not load library "/usr/lib64/pgsql/hstore.so": /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/pgsql/hstore.so)
我跑去ldd --version
獲取我的 GLIBC 版本,它回來了ldd (GNU libc) 2.17
。
我遇到的唯一解決方案建議
Running
yum update
,這沒有多大意義,因為我的系統似乎正在運行比所需版本更新的版本。根據您系統上的版本重新編譯程序
glibc
,我不太明白。我需要重新編譯什麼程式? PostgreSQL?
這幾天來一直讓我發瘋,我已經陷入了困境。任何幫助是極大的讚賞!
答案1
錯誤是在hstore
共享庫,因此它可能是唯一需要使用您的 GLIBC 版本進行編譯的庫。你的postgres套件中包含的顯然是用2.14版本編譯的,而你的是2.17版本。
通常hstore
應該對更高級別的版本感到滿意,但它所做的檢查顯然是“等於2.14”而不是“大於或等於2.14”。
文章PostgreSQL 功能亮點:hstore
描述如何hstore
從原始碼安裝該庫:
下載原始程式碼並安裝核心後,執行以下命令。
cd $PG_SOURCE_ROOT cd contrib/hstore make install
此時所有與hstore相關的程式庫和檔案都安裝在$INSTALL_FOLDER/share/extension中。
$ ls $INSTALL_FOLDER/share/extension hstore--1.0--1.1.sql hstore--1.1.sql hstore--unpackaged--1.0.sql hstore.control
然後連接到您的 Postgres 伺服器並使用 CREATE EXTENSION 命令完成 hstore 安裝。
postgres=# CREATE EXTENSION hstore; CREATE EXTENSION postgres=# \dx hstore List of installed extensions Name | Version | Schema | Description --------+---------+--------+-------------------------------------------------- hstore | 1.1 | public | data type for storing sets of (key, value) pairs (1 row)
使用 psql 用戶端,「\dx」允許檢查伺服器上已安裝的擴充功能清單。
答案2
我在 Manjaro Linux(Arch 的一個分支)上運行,將 Postgres 從版本 10 升級到 11 後,我得到了這個。
(這條路對我來說略有不同。我得到:could not load library "/usr/lib/postgresql/hstore.so"
。)
我跟著arch wiki 有關升級 postgres 的說明,並立即啟動並運行。
答案3
取得較新的 hstore。或嘗試找到一個 compat-glibc 包進行黏合。