Что значит «Общая длина столбцов в ограничении слишком длинная» в Informix? - PullRequest
1 голос
/ 05 октября 2008

Я получаю Общая длина столбцов в ограничении слишком велика. ошибка из следующего

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.

Ответы [ 2 ]

3 голосов
/ 05 октября 2008

Ваше ограничение первичного ключа составляет 785 байт (255 + 20 + 255 + 255). Если вы увеличите размер страницы базы данных до 4 КБ, это должно сработать. Вам также следует пересмотреть вопрос о том, должны ли столбцы быть такими же широкими, как вы их определяете.

Я нашел дискуссионную группу, где инженер Радика Гадде описывает , что максимальный размер индекса связан с размером страницы. Он говорит:

какую ошибку вы получаете при создании таблиц. Максимальная длина ключа индекса может быть рассчитана следующим образом:

[(СТРАНИЦА РАЗМЕРА -93) / 5] -1

вроде для 2к это [(2048-93) / 5] -1 = [1955/5] -1 = 391-1 = 390

если PAGESIZE 4K это [(4096-93) / 5] -1 = 4003 / 5-1 = 800-1 = 799

0 голосов
/ 11 марта 2013

Выше ответ завершен. Но подумал о том, чтобы добавить несколько полезных ссылок на случай, если кто-то снова столкнется с этой проблемой Размер страницы в Informix зависит от операционной системы. По своему недавнему опыту я обнаружил, что это 4K на Win 2008, OSX - Lion и 2K на SUSE EL4. Вы можете найти размер страницы с помощью '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

...