Vấn đề là kết xuất sử dụng hàm pg_catalog.lowrite(integer, bytea)
để tạo đối tượng lớn và cú pháp mặc định như thế nào bytea
các chữ được đại diện trong PostgreSQL đã thay đổi với phiên bản 9.0.
Có tham số bytea_output
có thể được đặt thành escape
để xuất ra bytea
ở định dạng cũ với các phiên bản PostgreSQL sau này. Than ôi, pg_dump
không tôn trọng thông số đó khi tạo kết xuất, nó luôn sử dụng "new" hex
định dạng.
Kết quả là không thể khôi phục kết xuất chứa các đối tượng lớn từ phiên bản PostgreSQL 9.0 trở lên vào cơ sở dữ liệu trước 9.0.
Bạn sẽ phải chuyển các đối tượng lớn này theo một số cách khác, có thể bằng cách viết một chương trình di chuyển.
Bạn có thể đề xuất (trên danh sách gửi thư pgsql-hacker) một tùy chọn cho pg_dump
cho phép đặt bytea_escape
đối với kết xuất, nhưng bạn có thể gặp phải sự phản kháng, vì việc khôi phục kết xuất từ phiên bản PostgreSQL mới hơn sang phiên bản cũ hơn không được hỗ trợ.