아래의 쿼리는 임시테이블을 생성하게 됩니다.
임시 쿼리는 Temporary tablespace를 사용하게 되는데
그 공간이 부족할 때 생기는 메시지인것 같습니다.
발생하는 경우는 2가지 입니다.
첫째는 Temporay tablespace가 사용하는 파일시스템의 공간에
여유가 있는지 확인하셔야 합니다.
둘째는 데이터가 저장되는 tablespace의 기본 pagesize는 4k 입니다.
그런데 만약 4k가 아닌 8,16, 32k등으로 생성하였다면
동일한 pagesize의 temporary tablespace도 존재하여야만 합니다.
-- 서준용 님이 쓰신 글:
>> 시스템 환경은 Linux+Apache+IBM DB2+PHP 입니다.
>>
>> 아래의 쿼리는 php를 이용한 웹게시판 소스중 답변소스에 있는 thread를 알기위한 쿼리문 입니다.
>> 원래는 php+mysql의 게시판 이었는데 제가 db2용으로 conversion 하던 중이었습니다.
>>
>> 글을 쓰고 삭제하고 수정하는 건 무리없이 conversion 했는데 답변에서 걸리는 바람에 지금 완성을 하지 못하고 있습니다.
>>
>> 부디 아시는 분들의 자세한 도움을 구합니다.
>>
>> 쿼리문 : (DREAMMED는 DB명이고 BOARD는 TABLE명 입니다.)
>>
>> SELECT
>> DREAMMED.BOARD.THREAD AS THREAD,
>> RIGHT(DREAMMED.BOARD.THREAD,1) AS RTHREAD
>> FROM
>> DREAMMED.BOARD
>> WHERE (
>> (DREAMMED.BOARD.FID=2) AND
>> (LENGTH(DREAMMED.BOARD.THREAD)=LENGTH('A')+1) AND
>> (LOCATE('A',DREAMMED.BOARD.THREAD)=1) )
>> ORDER BY
>> THREAD DESC
>> FETCH FIRST 1 ROWS ONLY
>>
>>
>> 에러 메시지 :
>>
>> Warning: SQL error: [IBM][CLI Driver][DB2/LINUX] SQL1585N A system temporary table space with sufficient page size does not exist. SQLSTATE=54048 , SQL state 54048 in SQLExecDirect in /home/dreammed/dream/board/reply.html on line 71
>>
>>
>> * 추신 :
>>
>> 이 쿼리문을 다방면에서 실행시켜 보았습니다. 근데 특이할만한 점을 발견했습니다.
>>
>> 1. 웹상(PHP 코드상)에서 실행----> 위의 에러메시지
>>
>> 2. 클라이언트 피씨의 IBM DB2 명령센타에서 실행------>다음과 같은 에러메시지
>> DBA2191E SQL 실행 오류.
>> com.ibm.db.DataException: 데이터베이스 관리 프로그램에서 오류가 발생했습니다. :
>> [IBM][JDBC 드라이버] CLI0601E 유효하지 않은 명령문 핸들 또는 명령문이 닫혔습니다.
>> SQLSTATE=S1000
>>
>> 3. 서버상에서 콘솔창 열고 DB2 CONNECT DREAMMED후 DB2 "쿼리문" 수행-----> 수행됨(결과값은 없었지만 에러 메시지 없었고 O RECORD 라는 결과출력됨)
|