수고하십니다.
풀백업을 받아 놓은 파일을 테스트로 복원을 해봤습니다.
똑같은 DB버전을 다시 설치해서요.
그런데 아래의 에러가 남아있던데, 원인이 뭘까요?
ERROR: Relation 'view_servers' does not exist
복원된 디비에서 view_servers라는 뷰가 만들어져 있는 것은 확인했거든요?
이건 무슨 에러일까요?
"view_servers" 로 감싸보시거나
view_servers 라는 뷰가 있는 스키마(네임스페이스)를 search_path에 넣고 해보세요
원인을 알았습니다.
풀백업 덤프 파일을 열어보니,
REVOKE ALL on "view_servers" from PUBLIC;GRANT SELECT on "view_servers" to PUBLIC;GRANT ALL on "view_servers" to "test";
\connect - test
CREATE VIEW "view_servers" as SELECT server_master.name AS server, domain_master.name AS domain, server_master.server AS code FROM server_master, domain_master WHERE (domain_master.domain = server_master.domain);
이렇게 되어 있더군요.
결국 view_servers는 뷰인데, 뷰가 만들어지기 전에 권한을 삭제하고 할당을 하는 작업을 하니 에러가 나는거였습니다.
결국은 풀덤프시 postgresql이 view_server의 생성 작업을 먼저 해줘야 하는데, 이 순서를 바꿔서 하는 군요. 이건 postgresql의 버그인가요.
아래와 같이 풀덤프 되어 있어야 정상인데요...
8.0 초기 버전까지 그 버그가 있었습니다.
그 버그: 각 객체들의 순서를 DB가 판단해서 restore 할 때 의존성이 앞서는 것부터 restore 하는 것이 정상적이지 않는 버그
어떤 버전을 쓰는지 한번 살펴보세요.
select version();
만일 최신 버전이면, 아직 고쳐지지 않았다고 버그 보고를 해야겠네요.
아 그런 버그가 있었군요.
7.1.1 버전입니다.