vacuum; 을 실행후 다시 시도해 보시고 (왜냐하면 혹시 인덱스 정보 자체가 깨어져 있을 가능성이 있기 때문입니다), 그래도 안되면 디비를 dump 로 백업 받은 후 디비를 없애고 다시 restore 시켜 해 보시기 바랍니다.
그래도 안된다면 디비 백업 받고 DBMS 프로그램 다시 받아서 설치해 봅시다. /./
>>블루 님께서 쓰시길<<
:: 역시 row의 갯수도 같군요....
:: 흑흑....무엇이 문제인지 모르겠어요.....
:: 어떻게 해야 할지 막막하군요.....ㅠ.ㅠ
::
:: >>정재익 님께서 쓰시길<<
::
:: :: 그렇군요. 일단 group by 에 사용된 것으로 보아 index 를 해주는 것이 자료가 많을 경우 상당한
:: 속도
:: :: 의 이득을 볼 것으로 판단됩니다. 그리고 primary key 에 틀림없이 중복되는 항목이 있을 것으로
:: 생각
:: :: 됩니다. 이것을 확인해 보시려면 다음 query 의 결과 돌아오는 row 의 갯수가 같은지 확인해 보시
:: 기 바
:: :: 랍니다.
:: ::
:: :: select distinct mem_id from member;
:: :: select mem_id from member;
:: ::
:: :: 만약 같다면 mem_id 는 unique 한 것이며, DBMS 자체가 잘못이 있는 것이겠지요.
:: ::
:: :: >>블루 님께서 쓰시길<<
:: ::
:: :: :: CREATE UNIQUE INDEX "member_pkey" on "member" using btree ( "mem_id" "varchar_ops" );를
:: 실행
:: :: 시
:: :: :: 키면
:: :: :: Cannot create unique index. Table contains non/unique value이란 내용이 나옵니다.
:: :: :: 테이블 내용이 잘못되어서 가장먼저 vacuum을 시켜 수정을 해보았지만...
:: :: :: tupple의 수가 일치하지 않아서 에러가 발생하더군요...
:: :: :: 그래서 중복되는 값들을 모두 삭제하고 다시 해보아도 중복된 Primary 값이 있다고 합니다.
:: :: :: 그래서 index를 삭제하고 위의 것을 실행시켰더니....위와 같은 결과가 나옵니다..
:: :: :: 그런데 우스운 것은 create view table as select * from member라는 명령어로 view를 만든후 c
:: rea
:: :: te
:: :: :: unique index를 사용하면 index가 생성되는 것입니다.
:: :: :: 그리고 이것을 insert into table select * from member를 하면 중복된 unique value땜시 실행
:: 이
:: :: 안된
:: :: :: 다는 에러가 나오는 군요....ㅠ.ㅠ
:: :: :: 또 select count(*) from member group by mem_id(이칼럼은 primary_key였슴다) having count(*)
:: >
:: :: 1;
:: :: :: 을 실행하니 0row값이 나옵니다...
:: :: :: 중복된 값도 없는데...어떻게 해야 할지....
:: :: :: 그래서 일단 index값을 삭제한후 dump를 받아서 수정을 본뒤 해보았지만....
:: :: :: 중복된 값이 없음에도 불구하고 계속 그런 결과만 나오는군요...어떻게 해야 할지 모르겠네요...
:: .
:: :: :: index 없이 사용해도 무리가 없다면 문제가 없지만....
:: :: :: 그렇지 않을 것같아서.....
:: :: :: 일단 index를 제외한 뒤에는 모든 것이 제대로 돌아갑니다.... ㅠ.ㅠ
:: :: ::
:: :: :: 여기나온 질문과 응답은 모두 찾아보구 해보라고 하는 건 다 해보았거든....
:: :: :: 근데.....안되더군요....
:: :: :: 방법이 없을까요....
:: :: :: index 없이 사용해도 괜찮다면 그냥 놔두고 하겠지만...아무래도 불안해서....ㅠ.ㅠ
|