> 제가 볼 때에는 pg_dump의 문제가 아니라 테이블의 문제라고 봅니다.
> 아마도 /s 를 붇이지 않아도 에러가 발생할 것 같은데요.
> 참고가 될지는 모르겠습나다만, 가끔(또는 자주) 시험적인 함수를 만드는
>
> 과정에서 테이블이 손상을 입는 경우가 있었습니다.
>
> 테이블을 만들어 확인해보지는 않았지만,
> 코드에는 문제가 없어 보입니다.(저도 그런류의 함수는 자주(?) 쓰거든요)
>
> 그런데 마지막의
> listen eds_oid;
> 은 왜 쓰신 것인지요?
> 원래는 다른 클라이언트에서 갱신된 것이 있나 서버에 물어보는 것이
> 아닙니까?
> 만드신 코드가 \i와 같은 방법으로 입력되는 경우라면 들은것이 없다고
> 말할탠데요.
>
> 인천의 나사 풀린 산호...
>
방금 생성했던 함수와 트리거와 rule을 전부 drop 시키고 다시 pg_dump를
해 보았습니다.. 이상없이 실행되는군요..
다시 함수와 트리거와 rule을 create 시킨후 pg_dump /s 를 하니
pg_dump /s dbname > result.sql
역시 같은 에러가 발생하네요..
dumpRules(): SELECT failed for table eds_oid. Explanation from backend: 'ERROR: get_ruledef of spec_insert_rule: query command type 5 not implemented yet
'.
그래서 에러가 발생하는 eds_oid 테이블에서 데이타만 pg_dump 해 보았습니다.
pg_dump /t eds_oid /a dbname > result.out
에러가 발생하지 않고 무사히 실행되는군요..
결국에는 schema를 dump시킬때만 에러가 발생하는것 같은데..
우선 데이터는 이상없이 백업할 수 있는것 같으니..백업상에 큰 문제는
없을것 같지만..
원래대로라면.. 함수나 트리거 rule을 사용하여도 pg_dump /s 가 이상없이
되어야 하는거 맞죠..??
listen eds_oid; 를 쓴 이유는 그냥 listen을 시험 해보기 위해서입니다..
notify와 listen에 대해서.. 시험용이니까요.. ^^*
음..시험적 함수를 쓰시다가 테이블이 손상을 입는 경우가 있다고요..
|