Câu trả lời:
Tôi gặp sự cố tương tự, nhưng nó đã được khắc phục bằng cách chạy mã sau
CREATE EXTENSION postgis;
Chi tiết,
postgis
. Tôi cần thiết để chạy các lệnh sau, và tất cả mọi thứ là tốt một lần nữa:DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
Bạn có thể làm điều đó từ thiết bị đầu cuối:
psql mydatabasename -c "CREATE EXTENSION postgis";
Để khiến psql dừng ở lỗi đầu tiên, hãy sử dụng -v ON_ERROR_STOP=1
(tùy chọn này được tắt theo mặc định , đó là lý do tại sao bạn thấy nhiều lỗi). Ví dụ:
psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
Lỗi thực tế là một cái gì đó như "không thể tải thư viện X", có thể thay đổi tùy theo trường hợp của bạn. Theo dự đoán, hãy thử lệnh này trước khi cài đặt tập lệnh sql:
ldconfig
(bạn có thể cần thêm tiền tố sudo
tùy thuộc vào hệ thống của bạn). Lệnh này cập nhật các đường dẫn đến tất cả các thư viện hệ thống, chẳng hạn như GEOS.
Bạn phải bật tiện ích mở rộng trên cơ sở dữ liệu của mình.
psql my_database -c "CREATE EXTENSION postgis;"
Lỗi này cũng có thể xảy ra nếu bạn cố gắng sử dụng các loại postgis trên một lược đồ khác chứ không phải public
.
Nếu bạn đang tạo lược đồ của riêng mình, bằng cách sử dụng postgis 2.3 trở lên và gặp phải lỗi này, hãy thực hiện như đã nêu ở đây :
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;
Sau đó, bạn có thể tiếp tục sử dụng các chức năng postgis.
Bạn cũng cần đảm bảo rằng người dùng mà bạn đang cố gắng sử dụng tiện ích mở rộng postgis, có quyền truy cập vào lược đồ nơi postgis được thiết lập (mà trong các hướng dẫn tôi đọc được gọi là 'postgis').
Tôi vừa gặp lỗi này và nó đã được giải quyết vì tôi chỉ cấp cho người dùng mới quyền truy cập vào cơ sở dữ liệu. Trong cơ sở dữ liệu tôi đã tạo, tôi đã chạy:
grant all on schema postgis to USERNAME;
Và điều này đã giải quyết được lỗi này
Các câu trả lời ở đây có thể giải quyết vấn đề của bạn, tuy nhiên nếu bạn đã bật postgis trên DB của mình, thì vấn đề có thể là bạn đang cố khôi phục bảng postgis (với cột hình học) thành một lược đồ khác với nơi mà tiện ích mở rộng postgis của bạn được bật. Trong pgAdmin, bạn có thể nhấp vào tiện ích mở rộng postgis và xem lược đồ nào được chỉ định. Nếu bạn đang cố gắng khôi phục bảng có cột hình học thành một giản đồ khác, bạn có thể gặp lỗi này.
Tôi đã giải quyết vấn đề này bằng cách thay đổi tiện ích mở rộng postgis của mình - tuy nhiên tôi không chắc đó có nhất thiết phải là cách tốt nhất để làm điều đó hay không. Tất cả những gì tôi biết là nó cho phép tôi khôi phục bảng.