2016-02-04 17 views
6

Tôi đang cố gắng chạy thử nghiệm trên ứng dụng GIS Django đang chạy PostGIS làm cơ sở dữ liệu phụ trợ.Thử nghiệm ứng dụng Django với Postgis Backend

Khi tôi cố gắng để chạy thử nghiệm, tôi nhận được lỗi sau:

django.db.utils.ProgrammingError: permission denied to create extension "postgis" 
HINT: Must be superuser to create this extension. 

Các lỗi có ý nghĩa. Chỉ người dùng cơ sở dữ liệu quản trị mới có thể cài đặt tiện ích mở rộng vì đặc quyền này cho phép thực thi mã bên ngoài tùy ý. NHƯNG kể từ khi Á hậu thử nghiệm phải tái tạo cơ sở dữ liệu mỗi khi các thử nghiệm được chạy, người dùng cơ sở dữ liệu của Django không thể tiến hành.

Đây là cấu hình cơ sở dữ liệu của tôi.

DATABASES = { 
    'default': { 
     'ENGINE': 'django.contrib.gis.db.backends.postgis', 
     'NAME': 'my_db', 
     'USER': 'my_user', 
     'PASSWORD': 'my_crazy_secure_password', 
     'HOST': '127.0.0.1', 
     'PORT': '', 
     'TEST_NAME': 'test_my_db', 
    }, 
} 

Trả lời

9

Giải pháp của tôi cho điều này thật đơn giản một cách đáng ngạc nhiên khi tôi đã tìm ra.

Kết nối với cơ sở dữ liệu template1 và chạy CREATE EXTENSION IF NOT EXISTS postgis;. Cơ sở dữ liệu template1 được sao chép khi một cơ sở dữ liệu mới được tạo ra, vì vậy tất cả cơ sở dữ liệu mới sẽ có phần mở rộng được cài đặt.

+0

Làm việc như một sự quyến rũ. Bạn là vua. – bbrame

+2

Chạy: 'sudo -u postgres psql -d template1 -c" TẠO MỞ RỘNG NẾU KHÔNG tồn tại postgis; " –

Các vấn đề liên quan