테이블 구조 자체에 약간의 문제를 안고 있습니다.
전체 한 튜플의 크기가 8 kb의 크기를 넘지 못하는 것을 알고 있으리라고 생각합니다. 아래 테이블 구조는 넘길 소지가 다분하군요. 테이블 사이즈에 조심을 하시기 바랍니다.
그리고 varchar(1) 은 아주 비효율적인 코딩입니다.
char(1) 은 1 바이트의 크기를 차지하지만 varchar(1)은 3 바이트의 크기를 차지하게 됩니다. 그러니 비효율적이지요.
> cgi를 만들다가 이상해서 올림니다.
> table product(
> p_code varchar(30),
> p_name varchar(80),
> p_madeby varchar(80),
> price1 int,
> price2 int,
> category1 varchar(80),
> category2 varchar(80),
> category3 varchar(80),
> recommand varchar(2),
> etc1 varchar(4096),
> etc2 text,
> point int,
> recom varchar(4096),
> review varchar(4096),
> pub_bg varchar(4096),
> simplicity varchar(100)
> );
> 이런 테이블을 사용하다가(데이터 입력되었음) 하나 추가할 필드가
> 생겨서( newbook varchar(1) ) pg_dump로 백업하여 test 사이트로
> 옮겨서 db를 다시 restore하였습니다. 그 후
> =>alter table product add column newbook varchar(1);로 추가 하였습니
> 다.
> 추가 전에 입력되 있던 데이터를 모두 지우고 새롭게 하나의 데이터를
> 입력 후
> =>select * from product where newbook='Y'; 하였더니 제목과 같은
> 에러가 났습니다.(RestrictionClauseSelectivity: bad value 2.461732)
> newbook field를 where절에 넣으면 그런 에러가 계속 생겼습니다.
>
6.4.2 버전에는 자료 취급에 에러가 있는 경우도 있었습니다.
디비 서버를 6.5.3으로 업그레이드 하시기 바랍니다.
결국 정확한 원인은 말씀드리기 힘들군요. /./
> 그래서 이짓저짓하다가 백업받은 db파일의 내용을
> 수정( product table를 create하는 부분에 newbook field 추가)하여 resto
> re시킨 후 작업을 하니깐 정상적으로 작동하더군요.
>
> 이상해서 2번정도 해봤는데 마찬가지더군요.
> 제가 뭘 잘못해선지, 원래 그런건지 몰라서 이렇게 올립니다.
> 저도 궁금하거든요.
> 참고로 postgresql/6.4.2/3kr.rpm을 사용하고 있습니다.
>
|