Tôi đang cố gắng kết xuất một số bảng từ máy chủ 9.5 beta 2 sang máy chủ 9.4.4. Hình thức của lệnh tôi đang sử dụng là khá chuẩn:
pg_dump -t table dbname | psql -h hostname -d dbname
Tôi đang sử dụng người dùng Postgres, điều mà tôi nhận ra có lẽ không lý tưởng, nhưng đây là cả hai hộp xử lý dữ liệu dev mà chỉ tôi sử dụng và nó có liên quan đến lỗi xảy ra. Ban đầu, tôi gặp lỗi
LRI: tham số cấu hình không được nhận dạng "row_security"
Dự kiến tính năng này là mới trong phiên bản 9.5 và, vâng, tôi nhận ra rằng không nên sử dụng pg_dump giữa các phiên bản Postgres khác nhau, nhưng, thật không thể tránh khỏi, vì tôi đã gặp phải một lỗi rất khó hiểu và cần phải di chuyển một lỗi lớn lượng dữ liệu tĩnh một lần.
Vì vậy, sử dụng hack đáng ghét này để loại bỏ lỗi row_security và bật dừng ở lỗi đầu tiên:
pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname
Bây giờ tôi nhận được:
LRI: quyền bị từ chối để tạo "pg_catalog.tablename" CHI TIẾT: Sửa đổi danh mục hệ thống hiện không được phép
Mặc dù có thể không mong muốn sử dụng người dùng / vai trò của Postgres, nhưng tôi hiểu rằng không nên có vấn đề về sự cho phép của bản chất này. Tôi sẵn sàng cho bất kỳ đề xuất nào lưu ý rằng đây là một hoạt động tắt và đây là các hộp dev xử lý dữ liệu không được kết nối với bất kỳ dịch vụ trực tiếp nào, vì vậy ưu tiên ưu tiên hơn các chính sách truy cập dữ liệu lý tưởng của công ty. Đã nói rằng, sẽ tốt hơn nếu hiểu làm thế nào để làm điều này đúng và tránh điều này trong tương lai.