database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9237 게시물 읽기
No. 9237
뷰의 기존 칼럼을 수정하다 오류가 납니다.
작성자
iyob
작성일
2013-02-18 20:00ⓒ
2013-02-20 15:56ⓜ
조회수
9,086

안녕하세요.

뷰에서 조인되는 다른 뷰가 많아서 기존 뷰의 칼럼을 수정하기 위해

delete from pg_attribute
-- select * from pg_attribute
where attrelid = regclass 'member_view' and (attname = 'enter_date' or attname = 'leave_date')

했는데 pgAdmin3에서 뷰가 하나도 보이지 않으면서

Error: catalog is missing 2 attribute 2 for relid 16536 라고 뜹니다.

어떻게 해야 하는지 난감합니다. 도와주세요.

이 글에 대한 댓글이 총 2건 있습니다.

pg_class.relnatts 칼럼이 해당 객체가 가지고 있는 칼럼의 수 입니다.

이 수와, pg_attribute에 있는 해당 객체의 칼럼 수가 맞지 않아서 생기는 문제겠네요.

다시 enter_date와, leave_date를 만들어주세요.

원본 테이블의 값과 똑 같이 하고, pg_attribute.attnum 값만 잘 정해주면 될 것 같네요.

될지 모르겠지만,

select pg_get_viewdef('member_view') 로 살펴보면, 해당 칼럼이 어느 테이블 것이고, 뷰에서 몇번째 놈인지 알 수 있을 것 같네요.

 

view의 칼럼을 빼는 방법은 view를 지웠다가 다시 만드는 것입니다.

 

(DB 작업자가 가지야할 기본 소양: 시스템 카랄로그 테이블의 직접적인 자료 조작은 피한다.)

 

김상기(ioseph)님이 2013-02-19 10:23에 작성한 댓글입니다.
이 댓글은 2013-02-19 10:26에 마지막으로 수정되었습니다.

먼저 답변주신 것 감사드립니다. 꾸벅

시간에 쫓기다보니 이전 백업으로 복구를 하고 이후 신규와 갱신은 수기 및 자료로 처리했습니다.

기본이 되는 뷰(다른 뷰에서 파생되는 뷰가 몇 단계된다고 가정하면)에서 뷰를 갱신할 때 실수로 새로 만든 칼럼이 오자가 날 경우 이 칼럼을 삭제하고 새로 만들려다 보니 시스템 카탈로그 수정을 시도했던 것입니다.

위와 같은 경우에는 어떻게들 하시는지 궁금합니다. 몽땅 다 날리고 차례로 뷰를 만드시는 건지, 아님 몇 단계 깊이로 뷰를 만드는 것을 지양하는지 궁금하네요.

어쨌든 톡톡히 값을 치렀습니다.

iyob님이 2013-02-19 20:13에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
9240substring추가질문입니다.. [1]
김원진
2013-02-19
9390
9239substring질문입니다...답변부탁드려요.... [2]
김원진
2013-02-19
9089
9238insert 관련 질문 입니다 [1]
carion
2013-02-19
8697
9237뷰의 기존 칼럼을 수정하다 오류가 납니다. [2]
iyob
2013-02-18
9086
9236goto문 안되나요?? [2]
김원진
2013-02-18
9186
9235autocommit=false 설정(windows) [1]
강성구
2013-02-17
9505
9234NOLOGGING 변환 ㅠㅠ 도와주세요 고수님. [2]
김성미
2013-02-13
9048
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다