[英]Creating Postgis extension: “ERROR: could not open extension control file”
運行create extension postgis;
時出現以下錯誤create extension postgis;
ERROR: could not open extension control file "/Library/PostgreSQL/9.6/share/postgresql/extension/postgis.control": No such file or directory
我正在使用在 OS X El Capitan 上使用 Homebrew 安裝的 Postgres 9.6.3 和 PostGIS 2.3.2。
mdfind -name postgis.control
顯示:
/usr/local/Cellar/postgis/2.3.2/share/postgresql/extension/postgis.control
brew info postgis
顯示:
PostGIS extension modules installed to:
/usr/local/share/postgresql/extension
當我啟動 Postgres 控制台時,我看到:
psql (9.6.3, server 9.6.1)
我讀了一個類似的問題, PostGIS Homebrew 安裝引用舊路徑? ,並嘗試使用頂級答案中給出的命令重新加載 postgresql,但我仍然看到psql (9.6.3, server 9.6.1)
。 另外,我相信我的問題是不同的,因為它在/Library
而不是/usr/local/Cellar
尋找擴展控制文件。
任何幫助將不勝感激。
當您嘗試安裝 postgis 時,它會安裝最新版本的 postgresql 作為依賴項。 因此,如果您安裝了 postgres@V (其中 V 是用戶所需的版本)
brew install postgresql@V
稍后你運行這個命令
brew install postgis
它將安裝 postgres10.1 或任何最新版本。 所以在那之后如果運行
create extension postgis;
在 postgresql@V 中,它會嘗試檢查它的擴展目錄,但它不會在擴展目錄中找到 postgis.control,因為這個 postgis 安裝在與它一起安裝的 postgresql 版本的擴展文件夾中。
要解決此問題,您必須從給定的 postgis 安裝創建一個符號鏈接到所需的 postgresql@V
postgresql@9.6 的這個例子
ln -s /usr/local/share/postgresql/extension/postgis* /usr/local/Cellar/postgresql@9.6/9.6.6/share/postgresql@9.6/extension/
ln -s /usr/local/lib/postgresql/postgis-2.3.so /usr/local/Cellar/postgresql@9.6/9.6.6/lib/postgis-2.3
ln -s /usr/local/lib/postgresql/rtpostgis-2.3.so /usr/local/Cellar/postgresql@9.6/9.6.6/lib/
在運行這些命令之前,請檢查系統中的 postgresql 版本和文件路徑
感謝這個要點的幫助。
我有一個類似的問題, 這里有完整的細節。 當您的 Postgres 控制台中提到服務器時,這意味着您正在引用較舊的代碼庫。 停止該服務器並使用以下命令啟動正確的服務器。
$ brew services list
這將為您提供正在運行的數據庫服務器列表。
$ brew services stop postgresql@<older-version>
$ brew services start postgresql
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.