PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Khôi phục db PostgreSQL từ bản sao lưu mà không có vấn đề ràng buộc khóa ngoại

Có vẻ như bạn đang nhận được kết xuất SQL chứ không phải kết xuất nhị phân từ pg_dump . Điều đó sẽ cung cấp cho bạn một đống SQL lớn với lược đồ (bao gồm cả FK) ở trên cùng, theo sau là một loạt INSERT để tải lại dữ liệu. Kết xuất nhị phân từ pg_dump sẽ phục vụ bạn tốt hơn, có vẻ như bạn cần thêm một chút cấu hình để cho PhpPgAdmin biết pg_dump ở đâu Là. Sau đó, bạn sẽ cung cấp kết xuất nhị phân đó vào pg_restorepg_restore sẽ xây dựng lại mọi thứ theo thứ tự thích hợp để tránh các vấn đề về tính toàn vẹn của tham chiếu (hoặc chính xác hơn là pg_restore sẽ khôi phục tất cả dữ liệu sau đó thêm các ràng buộc).

PhpPgAdmin dường như muốn làm việc với kết xuất SQL đơn giản thay vì pg_restore . Tôi thấy điều này thật khó tin nhưng tôi không thể tìm thấy bất kỳ điều gì trong tài liệu về cách gọi pg_restore . Nếu điều này là đúng thì có thể bạn sẽ phải chỉnh sửa thủ công kết xuất SQL và chuyển tất cả các FK xuống cuối.

Bạn cũng có thể thử thêm SET CONSTRAINTS ALL DEFERRED; ở đầu kết xuất SQL của bạn, điều này sẽ trì hoãn việc kiểm tra ràng buộc cho đến khi kết thúc giao dịch, bạn cũng sẽ muốn đảm bảo rằng toàn bộ khối INSERT được chứa trong một giao dịch.

Nếu PhpPgAdmin thực sự không thể gọi pg_restore thì tốt hơn hết bạn nên sử dụng pg_dumppg_restore bằng tay để bạn có quyền kiểm soát cần thiết đối với các quy trình sao lưu của mình. Rất tiếc, bất kỳ công cụ quản trị cơ sở dữ liệu nào không thể xử lý việc sao lưu cơ sở dữ liệu bằng FKs còn tệ hơn là vô dụng. Hy vọng rằng ai đó biết cách của họ xung quanh PhpPgAdmin sẽ xuất hiện và cho chúng tôi biết cách sử dụng pg_restore với PhpPgAdmin.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không phân biệt chữ hoa chữ thường như (ilike) trong Datamapper với Postgresql

  2. Cách kết nối với postgresql bằng url

  3. CHỈ SAO CHÉP một số cột từ CSV đầu vào?

  4. Cách tạo khóa ngoại có ràng buộc trên bảng tham chiếu trong PostgreSQL

  5. Cấu trúc lại một hàm PL / pgSQL để trả về kết quả đầu ra của các truy vấn SELECT khác nhau