Tại sao cài đặt PostGIS không tạo template_postgis?


36

Tôi đã đi theo lộ trình này để cài đặt PostgreSQL và PostGIS:

Bây giờ khi tôi khởi chạy pgAdmin và cố gắng tạo cơ sở dữ liệu PostGIS mới, không có template_postgis để sử dụng trong Mẫu.


Tôi đã thử đi một tuyến đường khác, đó là tải xuống gói PostgreSQL trực tiếp từ PostgreSQL. Điều này cài đặt máy chủ và cho phép bạn sử dụng StackBuilder để tải xuống và cài đặt PostGIS. Điều này không khắc phục vấn đề của tôi.

Câu trả lời:


32

Bạn có thể dễ dàng tạo mẫu nếu nó không tự động. Dưới đây là một mô tả cho Ubuntu: http://obsessivecoder.com/2010/02/01/installing-postgresql-8-4-postgis-1-4-1-and-pgrouting-1-0-3-on-ub Ubuntu -9-10-nghiệp-koala /

Đây là phần thiết yếu:

sudo su postgres
createdb template_postgis
createlang plpgsql template_postgis
psql -d template_postgis -f /usr/share/postgresql/8.4/contrib/postgis.sql
psql -d template_postgis -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql

Trong Tê tê chính xác:

sudo su postgres
createdb template_postgis
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql

Strange .. ở bước 'createlang plpgsql postgistemplate' tôi nhận được một $ "plpgsql" đã được cài đặt trong cơ sở dữ liệu "postgistemplate" ... và sau đó trên các bước tiếp theo, psql: command not found
Michael Markieta

Cập nhật - Không có thư mục postgis trong / usr / share / path
Michael Markieta

Sau đó, tôi đoán nó được ẩn ở một nơi khác trên OSX. Bạn đã thử tìm kiếm các tập tin?
underdark

Tìm thấy các tập tin, tất cả các dòng mã chạy mà không có lỗi. Nhưng pgAdmin3 không hiển thị mẫu vẫn ... Hrmm .. Khởi động lại máy Mac của tôi để xem điều đó có thay đổi gì không, nhưng vẫn nada. (lạ ... Tôi đã làm việc này trên máy Mac của mình trước khi chuyển sang Lion)
Michael Markieta

Người dùng nào bạn đã sử dụng để tạo mẫu và bạn đang sử dụng người dùng nào trong pgAdmin?
underdark

29

Từ phiên bản 2 Postgis được kích hoạt bằng cách sử dụng hệ thống mở rộng. Để kích hoạt không gian cơ sở dữ liệu, hãy đăng nhập vào cơ sở dữ liệu của bạn và sau đó:

 CREATE EXTENSION postgis;
 CREATE EXTENSION postgis_topology;

nguồn: http://postgis.net/docs/postgis_installation.html

Lưu ý: Chỉ các SUPERUSERSvai trò có khả năng tạoEXTENSIONS


từ pgAdmin4: Cơ sở dữ liệu >> {chọn db} >> Tiện ích mở rộng >> -r-click >> Tạo >> Chọn từ danh sách
matt wilkie

6

Tôi gặp vấn đề tương tự và cuối cùng đã cài đặt gói được tìm thấy tại:

đăng ký

bạn có thể chọn cài đặt postgis trong giai đoạn cài đặt hoặc gọi 'Application Stack Builder' sau này. Nếu quá trình cài đặt không hoạt động, hãy chọn một thư mục khác để tải xuống trình cài đặt postgis (sẽ được gọi là edb_postgis_1_5_pg91.app.zip). Giải nén zip và cài đặt. Nếu nó không hoạt động, bạn có thể muốn khởi động lại và thử lại. Trong pgAdmin III template_postgis sẽ xuất hiện.


3

Câu hỏi có thể đã lỗi thời nhưng tôi gặp phải lỗi tương tự trên OS X Lion. Có lẽ câu trả lời của tôi có thể giúp người dùng khác.

Cài đặt mặc định của PostGIS với "stack builder" sẽ thất bại. Nhưng sau bước cài đặt đầu tiên, bạn có thể chọn thư mục tải xuống cho PostGIS. Chỉ cần tải nó xuống máy tính để bàn của bạn và giải nén nó bằng tay. Bằng cách nhân đôi tập tin, nó sẽ cài đặt đúng. Postgis_template hiện có sẵn trong pgAdmin.


1

Theo tài liệu của PostGIS, chỉ

Một số bản phân phối đóng gói của PostGIS ... tải các hàm PostGIS vào cơ sở dữ liệu mẫu có tên là template_postgis.

Vì vậy, không phải mọi phân phối đi kèm template_postgis.

Như đã nói trong các câu trả lời hiện có, trong PostGIS 2.x, bạn có thể dễ dàng tự tạo hoặc tùy chỉnh mẫu bằng cách tạo cơ sở dữ liệu thông thường có tên template_postgis là superuser, sau đó tạo các tiện ích mở rộng bắt buộc và tùy chọn (như pgRouting). Theo tài liệu của PostGIS:

sudo su postgres
createdb template_postgis

psql -d template_postgis -c "CREATE EXTENSION postgis;"
psql -d template_postgis -c "CREATE EXTENSION postgis_topology;"

-- if you built with sfcgal support --
psql -d template_postgis -c "CREATE EXTENSION postgis_sfcgal;"

Ngoài ra, bạn có thể đánh dấu cơ sở dữ liệu mới được tạo này làm cơ sở dữ liệu mẫu bằng cách đặt datistemplatecờ trong bảng hệ thống pg_databasethành ture.

psql -d template_postgis -c "UPDATE pg_database SET datistemplate = 'true' WHERE datname = 'template_postgis';"

Điều này sẽ, ví dụ, ngăn cơ sở dữ liệu mẫu vô tình bị đánh rơi hoặc thay đổi bởi người dùng khác hoặc chính bạn. (Bạn sẽ cần đặt cờ thành false nếu bạn muốn thay đổi mẫu.)

Sau đó, bạn có thể tạo cơ sở dữ liệu không gian dựa trên bất cứ thứ gì bạn đưa vào mẫu:

createdb -T template_postgis my_spatial_db
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.