Tôi đang sử dụng pg_dump / pg_restore để sao lưu và khôi phục cơ sở dữ liệu PostgreQuery, nhưng tôi nhận được một số thông báo lỗi (và trạng thái thoát khác không) từ pg_restore. Tôi đã thử một trường hợp cơ bản siêu đơn giản (được nêu dưới đây) nhưng vẫn gặp các lỗi sau:
pg_restore: [archiver (db)] Lỗi trong khi quá trình xử lý: pg_restore: [archiver (db)] Lỗi từ mục TOC 5; 2615 2200 SCHema công khai pg_restore: [archiver (db)] không thể thực thi truy vấn: ERROR: lược đồ "công khai" đã tồn tại Lệnh là: TẠO SCHema công khai;
Các bước để tái sản xuất:
- Cài đặt bản phân phối Ubuntu 14.04 tươi, vani (Tôi đang sử dụng Vagrant với hộp Vagrant này ).
- Cài đặt PostgreQuery 9.3, cấu hình để cho phép các kết nối cục bộ là "postgres" của người dùng PostgreSQL từ bất kỳ người dùng Linux nào.
Tạo một cơ sở dữ liệu thử nghiệm. Tôi chỉ đang làm:
vagrant @ vagrant-ubfox-trusty-64: ~ $ psql --username = postgres postgres psql (9.3.5) Nhập "trợ giúp" để được giúp đỡ. postgres = # tạo cơ sở dữ liệu mydb; TẠO NÊN CƠ SỞ DỮ LIỆU postgres = # \ q vagrant @ vagrant-ub Ubuntu-trusty-64: ~ $ psql --username = postgres mydb psql (9.3.5) Nhập "trợ giúp" để được giúp đỡ. mydb = # tạo dữ liệu bảng (mục bigint); TẠO BẢNG mydb = # chèn vào giá trị dữ liệu (1); XÁC NHẬN 0 1 mydb = # chèn vào giá trị dữ liệu (2); XÁC NHẬN 0 1 mydb = # chèn vào giá trị dữ liệu (3); XÁC NHẬN 0 1 mydb = # \ q
Tạo một bản sao lưu của cơ sở dữ liệu như vậy:
PGPASSWORD = "postgres" pg_dump --dbname = mydb --username = postgres --format = custom> pg_backup.dump
Xóa một số hàng ra khỏi bảng dữ liệu trong mydb để chúng tôi có thể biết liệu chúng tôi có khôi phục dữ liệu thành công hay không.
Khôi phục cơ sở dữ liệu với:
PGPASSWORD = "postgres" pg_restore --clean --create --dbname = postgres --username = postgres pg_backup.dump
Dữ liệu được khôi phục, nhưng lệnh pg_restore trong bước 6 thoát với trạng thái 1
và hiển thị đầu ra sau:
pg_restore: [archiver (db)] Lỗi trong khi quá trình xử lý: pg_restore: [archiver (db)] Lỗi từ mục TOC 5; 2615 2200 SCHema công khai pg_restore: [archiver (db)] không thể thực thi truy vấn: ERROR: lược đồ "công khai" đã tồn tại Lệnh là: TẠO SCHema công khai; CẢNH BÁO: lỗi bỏ qua khi khôi phục: 1
Tôi không thể bỏ qua điều này bởi vì tôi đang chạy lệnh này theo chương trình và cần sử dụng trạng thái thoát để xác định xem khôi phục có thất bại hay không. Ban đầu, tôi tự hỏi liệu vấn đề này có phải là do tôi đặt cơ sở dữ liệu của mình ở chế độ công khai (lược đồ mặc định). Tôi đã lập luận rằng công khai sẽ được tạo ra do kết quả của --create
tùy chọn bởi pg_restore trước khi dữ liệu được khôi phục (có thể cố gắng tạo ra lược đồ đó vì đó là bảng của tôi), nhưng khi tôi thử các bước trên với bảng của mình trong một lược đồ khác, các kết quả là như nhau và các thông báo lỗi giống hệt nhau.
Tôi có làm điều gì sai? Tại sao tôi thấy lỗi này?
--create
màclean
không khắc phục sự cố.