다른 서버의 데이터베이스에서 백업을 수행했으며이 명령을 사용하여 필요한 역할과 다른 역할을합니다.
pg_dump -Fc db_name -f db_name.dump
그런 다음 데이터베이스를 복원해야하는 다른 서버에 백업을 복사했지만 해당 데이터베이스에 사용 된 소유자가 없습니다. 데이터베이스에 owner owner1
가 있지만 다른 서버에서는 내가 가지고 owner2
있는 데이터베이스 만 복원하고 소유자를 변경해야 한다고 가정 해 보겠습니다 .
복원 할 때 다른 서버에서 수행 한 작업 :
createdb -p 5433 -T template0 db_name
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump
그러나 복원이 실행되면 다음 오류가 발생합니다.
pg_restore: [archiver (db)] could not execute query: ERROR: role "owner1" does not exist
소유자를 변경하려면 어떻게 지정할 수 있습니까? 아니면 불가능합니까?
답변
--no-owner
옵션을 사용해야합니다 . 이렇게 pg_restore
하면 개체의 소유권을 원래 소유자로 설정하려는 시도가 중지됩니다 . 대신 객체는 다음에서 지정한 사용자가 소유합니다.--role
createdb -p 5433 -T template0 db_name
pg_restore -p 5433 --no-owner --role=owner2 -d db_name db_name.dump