2008-10-05 4 views
1

제약 조건의 열 길이가 너무 깁니다. 다음에서 오류가 발생했습니다Informix에서 "constaint의 열 총 길이가 너무 깁니다"란 뜻입니까?

sql] Failed to execute: CREATE TABLE GTW_WORKFLOW_MON (WORKFLOW_NAME VARCHAR(255) NOT 
NULL, WORKFLOW_LOADED NUMERIC(20) NOT NULL, ACTIVITY_NAME VARCHAR(255) NOT NULL, FLAGS  
INTEGER NOT NULL, MONITOR_NAME VARCHAR(255) NOT NULL, CLASSNAME VARCHAR(255) NOT NULL, S 

TR0 VARCHAR(255), STR1 VARCHAR(255), STR2 VARCHAR(255), NUM0 VARCHAR(255), NUM1 
VARCHAR(255), NUM2 VARCHAR(255), DATE0 VARCHAR(255), DATE1 VARCHAR(255), DATE2 
VARCHAR(255), PRIMARY KEY (WORKFLOW_NAME,WORKFLOW_LOADED,ACTIVITY_NAME,MONITOR_NAME)) 

    [sql] java.sql.SQLException: Total length of columns in constraint is too long. 
+0

당신을 가장 도움이 답을 선택하세요. –

답변

3

기본 키 제약 조건은 785 바이트 (255 + 20 + 255 + 255)입니다. 데이터베이스 페이지 크기를 4K로 늘리면 간신히 작동합니다. 또한 열을 정의 할 때와 같은 너비의 열이 필요할 경우 다시 고려해야합니다.

엔지니어 인 Radhika Gadde describes이 페이지 크기와 관련된 토론 그룹을 발견했습니다. 그는 다음과 같이 말합니다 :

테이블 생성 중에 오류가 발생했습니다.

[(PAGESIZE -93)/5] -1-

2K 것이처럼 [(2048-93)/5] -1 = 1,955 : 다음 최대 인덱스 키 길이를 산출 할 수있다/5] -1 = 391-1 = 390

PAGESIZE 경우 4K 그것이 [(4096-93)/5] -1 = 4003/5-1 = 800-1 = 799

+0

Nit pick - NUMERIC (20)은 DECIMAL (20)과 같으며 (20/2) +1 = 11 바이트를 차지합니다. 하지만 기본적인 대답은 맞습니다. –

0

위 대답이 완료되었습니다. 그러나 누군가가이 문제에 다시 출근하는 경우 도움이되는 링크를 추가 할 것을 고려했습니다. Informix의 페이지 크기는 운영 체제에 따라 다릅니다. 최근 경험으로 SUSE EL4에서 Win 2008, OSX - Lion 및 2K에서 4K를 발견했습니다. 'onstat -D'를 사용하여 페이지 크기를 찾을 수 있습니다.

이 경험으로 http://sumedha.blogspot.com/2013/03/how-to-increase-informix-page-size.html을 썼습니다. 다음 IBM의 문서 링크도 매우 유용합니다. 그들 중 어떤 도움이 경우 모든 -

http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp?topic=%2Fcom.ibm.admin.doc%2Fids_admin_0564.htm

관련 문제