답변:
나는 같은 문제가 있었지만 다음 코드를 실행하여 수정되었습니다.
CREATE EXTENSION postgis;
상세히,
postgis
. 다음 명령을 실행해야했고 모든 것이 다시 DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
첫 번째 오류에서 psql을 중지하려면 -v ON_ERROR_STOP=1
( 기본적으로 꺼져 있으므로 많은 오류가 표시되는 이유)를 사용하십시오. 예를 들면 :
psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
실제 오류는 "라이브러리 X를로드 할 수 없음"과 같은 것으로 상황에 따라 다를 수 있습니다. 추측으로 SQL 스크립트를 설치하기 전에 다음 명령을 시도하십시오.
ldconfig
( sudo
시스템에 따라 접두사가 필요할 수 있습니다). 이 명령은 GEOS와 같은 모든 시스템 라이브러리에 대한 경로를 업데이트합니다.
데이터베이스에서 확장을 활성화해야합니다.
psql my_database -c "CREATE EXTENSION postgis;"
이 오류는이 아닌 다른 스키마 에서 postgis 유형을 사용하려는 경우에도 발생할 수 있습니다 public
.
postgis 2.3 이상을 사용하여 자신의 스키마를 생성하고이 오류가 발생하는 경우 여기에 설명 된대로 다음 을 수행 하십시오 .
CREATE SCHEMA IF NOT EXISTS my_schema;
CREATE extension postgis;
UPDATE pg_extension
SET extrelocatable = TRUE
WHERE extname = 'postgis';
ALTER EXTENSION postgis
SET SCHEMA my_schema;
ALTER EXTENSION postgis
UPDATE TO "2.5.2next";
ALTER EXTENSION postgis
UPDATE TO "2.5.2";
SET search_path TO my_schema;
그런 다음 postgis 기능을 계속 사용할 수 있습니다.
여기에 대한 답변으로 문제를 해결할 수 있지만 DB에서 이미 postgis를 활성화 한 경우 postgis 확장이 활성화 된 곳이 아닌 다른 스키마로 postgis 테이블 (지오메트리 열 포함)을 복원하려고 할 수 있습니다. pgAdmin에서 postgis 확장을 클릭하고 지정된 스키마를 볼 수 있습니다. geometry 열이있는 테이블을 다른 스키마로 복원하려고하면이 오류가 발생할 수 있습니다.
내 postgis 확장을 변경하여이 문제를 해결했지만 이것이 반드시 최선의 방법인지 확실하지 않습니다. 내가 아는 것은 테이블을 복원 할 수 있다는 것뿐입니다.