Qu'est-ce que la & # 8220; longueur totale des colonnes dans la contrainte est trop longue & # 8221; err signifie dans Informix?
Question
J'obtiens que la longueur totale des colonnes dans la contrainte est trop longue. erreur de ce qui suit
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.
La solution
Votre contrainte de clé primaire est de 785 octets (255 + 20 + 255 + 255). Si vous augmentez la taille de la page de votre base de données à 4 Ko, cela devrait fonctionner à peine. Si vous souhaitez que vos colonnes soient aussi larges que vous les définissez, vous devez également les reconsidérer.
J'ai trouvé un groupe de discussion où une ingénieure, Radhika Gadde, décrit que la taille maximale de l'index est liée à la taille de la page. Il dit:
quelle erreur vous obtenez lors de la création des tables. La longueur maximale de la clé d’index peut être calculée comme suit:
[(PAGESIZE -93) / 5] -1
comme pour 2k c'est [(2048-93) / 5] -1 = [1955/5] -1 = 391-1 = 390
si PAGESIZE est 4K c'est [(4096-93) / 5] -1 = 4003 / 5-1 = 800-1 = 799
Autres conseils
La réponse ci-dessus est terminée. Mais pensez à ajouter des liens utiles au cas où quelqu'un reviendrait sur ce problème. Pagesize sur Informix dépend du système d'exploitation. Sur mon expérience récente, j'ai trouvé que c'était 4K sur Win 2008, OSX - Lion et 2K sur SUSE EL4. Vous pouvez trouver la taille de la page en utilisant 'onstat -D'.
J'ai écrit http: // sumedha. blogspot.com/2013/03/how-to-increase-informix-page-size.html avec cette expérience. Suivre le lien vers la documentation d’IBM est également très utile.