O que significa “Comprimento total de colunas na restrição é demasiado longo” err significa em Informix?
Pergunta
Eu obter o comprimento total de colunas na restrição é muito longo. de erro da seguinte
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.
Solução
Seu restrição de chave primária é de 785 bytes (255 + 20 + 255 + 255). Se você aumentar o tamanho da página do banco de dados para 4K ele deve funcionar, mal. Você também deve reconsiderar se você precisa de suas colunas para ser tão grande como você está definindo-los.
Eu encontrei um grupo de discussão, onde um engenheiro, Radhika Gadde, descreve que o tamanho máximo do índice está relacionado ao tamanho da página. Ele diz:
que o erro que você está recebendo, enquanto criação de tabelas. comprimento da chave Índice máximo pode ser calculado da seguinte forma:
[(PAGESIZE -93) / 5] -1
como para 2k é [(2048-93) / 5] = -1 [1955/5] -1 = 391-1 = 390
Se PAGESIZE é 4K é [(4096-93) / 5] -1 = 4003 / 01/05 = 800-1 = 799
Outras dicas
Acima de resposta é completa. Mas pensou em acrescentar alguns links úteis no caso de alguém corre para esta questão novamente. Pagesize em Informix depende do sistema operacional. Na minha recente experiência, descobri que é 4K no Win 2008, OSX - Leão e 2K no SUSE EL4. Você pode encontrar o tamanho da página usando 'onstat -d'.
Eu escrevi http: // Sumedha. blogspot.com/2013/03/how-to-increase-informix-page-size.html com esta experiência. Após link da documentação da IBM também é muito útil.