Postgis로 테이블을 만들려고합니다. 나는이 페이지에서 그것을한다 . 그러나 postgis.sql 파일을 가져올 때 많은 오류가 발생합니다.
ERROR: type "geometry" does not exist
아무도 내가 어떻게 고칠 수 있는지 알고 있습니까?
답변
나는 같은 문제가 있었지만 다음 코드를 실행하여 수정되었습니다.
CREATE EXTENSION postgis;
상세히,
- pgAdmin 열기
- 데이터베이스 선택 (클릭)
- 막대에서 “SQL”아이콘을 클릭하십시오.
- “CREATE EXTENSION postgis”실행 암호
답변
Postgis-Extension이로드되면 공용 스키마에 대한 검색 경로가 누락되어 SQL에서 geometry-type을 찾지 못할 수 있습니다.
시험
SET search_path = …, 공개;
scsript의 첫 번째 줄에 있습니다. (다른 필수 검색 경로로 대체하십시오)
답변
터미널에서 할 수 있습니다.
psql mydatabasename -c "CREATE EXTENSION postgis";
답변
첫 번째 오류에서 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 기능을 계속 사용할 수 있습니다.
답변
또한 postgis 확장을 사용하려는 사용자가 postgis가 설정된 스키마 (내가 읽은 자습서에서 ‘postgis’라고 함)에 액세스 할 수 있는지 확인해야합니다.
방금이 오류가 발생했으며 데이터베이스에 대한 새 사용자 액세스 권한 만 부여했기 때문에 해결되었습니다. 내가 만든 데이터베이스에서 다음을 실행했습니다.
grant all on schema postgis to USERNAME;
그리고 이것은이 오류를 해결했습니다.
