Tôi đang sử dụng Postgres cho dự án django và hiện đang triển khai hệ thống sao lưu/khôi phục cơ sở dữ liệu đơn giản nhất có thể thực hiện pg_dump khi người dùng nhấp vào sao lưu và pg_restore khi họ nhấp vào khôi phục sao lưu.PostgreSQL 9.1 pg_restore lỗi liên quan đến PLPGSQL
Tất cả có vẻ tốt đẹp và dandy cho đến khi nó thực sự cố gắng để thực hiện các pg_restore lúc mà nó mang lại cho lỗi này:
pg_restore: [archiver (db)] Error from TOC entry 3206; 0 0 COMMENT EXTENSION plpgsql pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
Tôi đã nhìn vào là những gì plpgsql vv và tôi hiểu rằng, và liên quan đến các lỗi Tôi đã thử cài đặt thủ công "chủ sở hữu của tiện ích mở rộng" cho người dùng thực thi tập lệnh và sở hữu cơ sở dữ liệu nhưng không thay đổi gì, thực sự gây phiền nhiễu vì lỗi của nó cố gắng đặt nhận xét về mọi thứ
Đây là tất cả được tạo tự động bởi pg_dump để dòng bình luận không thể bị xóa và không có cờ để vô hiệu hóa các bình luận (mà tôi nhận thức được), vì vậy tôi thực sự bị mắc kẹt như thế nào để giải quyết vấn đề này.
Nếu bạn kết nối bằng psql và gõ '\ l', bạn thấy gì trong cột" Chủ sở hữu "cho cơ sở dữ liệu đó? Vì plpgsql là một ngôn ngữ không đáng tin cậy, nó chỉ có thể được sửa đổi (và tôi đoán nó sẽ áp dụng ngay cả với nhận xét về nó) bởi chủ sở hữu cơ sở dữ liệu hoặc siêu người dùng cơ sở dữ liệu. – kgrittn
tôi có thể xác nhận rằng chủ sở hữu là của cơ sở dữ liệu là chính xác và phù hợp với người dùng được chỉ định bởi tùy chọn -U của lệnh pg_restor (và pg_dump quá) –
Nó không phải là đơn giản, không may. Tôi có đầu ra pg_dump hy vọng có thể tạo ra các ngôn ngữ và chức năng bằng cách sử dụng các ngôn ngữ đó.Nếu tôi tự tạo ngôn ngữ làm siêu người dùng DB, việc tạo hàm không thành công do lỗi quyền. Nếu không, cài đặt ngôn ngữ thủ tục không thành công do lỗi cho phép. Trong cả hai trường hợp, kích hoạt tiếp tục xuống mà dựa vào những chức năng hiện có cũng không thể được tạo ra, bởi vì các chức năng không tồn tại. – Quixadhal