programing

Postgis 설치 : "지오메트리"유형이 없습니다.

nasanasas 2020. 10. 4. 11:31
반응형

Postgis 설치 : "지오메트리"유형이 없습니다.


Postgis로 테이블을 만들려고합니다. 나는이 페이지에서 그것을한다 . 그러나 postgis.sql 파일을 가져올 때 많은 오류가 발생합니다.

ERROR:  type "geometry" does not exist

아무도 내가 어떻게 고칠 수 있는지 알고 있습니까?


나는 같은 문제가 있었지만 다음 코드를 실행하여 수정되었습니다.

CREATE EXTENSION postgis;

상세히,

  1. pgAdmin 열기
  2. 데이터베이스 선택 (클릭)
  3. 막대에서 "SQL"아이콘을 클릭하십시오.
  4. "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와 같은 모든 시스템 라이브러리에 대한 경로를 업데이트합니다.


Postgis-Extension이로드되면 공용 스키마에 대한 검색 경로가 누락되어 SQL에서 geometry-type을 찾지 못할 수 있습니다.

시험

SET search_path = ..., 공개;

scsript의 첫 번째 줄에 있습니다. (다른 필수 검색 경로로 대체하십시오)


터미널에서 할 수 있습니다.

psql mydatabasename -c "CREATE EXTENSION postgis";

데이터베이스에서 확장을 활성화해야합니다.

psql my_database -c "CREATE EXTENSION postgis;"


또한 postgis 확장을 사용하려는 사용자가 postgis가 설정된 스키마 (내가 읽은 자습서에서 'postgis'라고 함)에 액세스 할 수 있는지 확인해야합니다.

방금이 오류가 발생했으며 데이터베이스에 대한 새 사용자 액세스 권한 만 부여했기 때문에 해결되었습니다. 내가 만든 데이터베이스에서 다음을 실행했습니다.

grant all on schema postgis to USERNAME; 

그리고 이것은이 오류를 해결했습니다.


여기에 대한 답변으로 문제를 해결할 수 있지만 DB에서 이미 postgis를 활성화 한 경우 postgis 확장이 활성화 된 곳이 아닌 다른 스키마로 postgis 테이블 (지오메트리 열 포함)을 복원하려고 할 수 있습니다. pgAdmin에서 postgis 확장을 클릭하고 지정된 스키마를 볼 수 있습니다. geometry 열이있는 테이블을 다른 스키마로 복원하려고하면이 오류가 발생할 수 있습니다.

내 postgis 확장을 변경하여이 문제를 해결했지만 이것이 반드시 최선의 방법인지 확실하지 않습니다. 내가 아는 것은 테이블을 복원 할 수 있다는 것뿐입니다.


또는...

cursor.execute('create extension postgis')

psycopg2의 현재 커서를 사용하여 파이썬 프로그램에서.


먼저 (pg 버전 : psql -V와 일치) postgis가 설치되어 있는지 확인하십시오.

sudo apt install postgis postgresql-9.6-postgis-2.3

테이블 생성 직전 추가 :

db.engine.execute('create extension postgis') 
db.create_all()

이 오류는이 아닌 다른 스키마 에서 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 기능을 계속 사용할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/6850500/postgis-installation-type-geometry-does-not-exist

반응형