Tôi đã sao lưu trên cơ sở dữ liệu trên máy chủ khác và có vai trò khác với những gì tôi cần, với lệnh này:
pg_dump -Fc db_name -f db_name.dump
Sau đó, tôi đã sao lưu bản sao lưu sang một máy chủ khác, nơi tôi cần khôi phục cơ sở dữ liệu, nhưng không có chủ sở hữu nào được sử dụng cho cơ sở dữ liệu đó. Giả sử cơ sở dữ liệu có chủ sở hữu owner1
, nhưng trên máy chủ khác tôi chỉ có owner2
và tôi cần khôi phục cơ sở dữ liệu đó và thay đổi chủ sở hữu.
Những gì tôi đã làm trên một máy chủ khác khi khôi phục:
createdb -p 5433 -T template0 db_name
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump
Nhưng khi quá trình khôi phục được chạy, tôi gặp các lỗi sau:
pg_restore: [archiver (db)] could not execute query: ERROR: role "owner1" does not exist
Làm cách nào để chỉ định nó để nó thay đổi chủ sở hữu? Hay là không thể?
--no-owner
đề xuất trong câu trả lời được chấp nhận, bạn cũng có thể cần--no-privileges
. Xem câu trả lời này