Postgis 설치 : "지오메트리"유형이 없습니다.
Postgis로 테이블을 만들려고합니다. 나는이 페이지에서 그것을한다 . 그러나 postgis.sql 파일을 가져올 때 많은 오류가 발생합니다.
ERROR: type "geometry" does not exist
아무도 내가 어떻게 고칠 수 있는지 알고 있습니까?
나는 같은 문제가 있었지만 다음 코드를 실행하여 수정되었습니다.
CREATE EXTENSION postgis;
상세히,
- pgAdmin 열기
- 데이터베이스 선택 (클릭)
- 막대에서 "SQL"아이콘을 클릭하십시오.
- "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
'programing' 카테고리의 다른 글
Python에서 문자열이 대문자, 소문자 또는 대소 문자 혼합인지 확인 (0) | 2020.10.05 |
---|---|
Asp.net Identity MVC 5에서 역할 만들기 (0) | 2020.10.05 |
한 줄의 머리와 꼬리 (0) | 2020.10.04 |
CSS를 사용하여 Div를 2 개의 열로 분할 (0) | 2020.10.04 |
git은 큰 바이너리 파일을 추적 할 때 매우 느립니다. (0) | 2020.10.04 |