Informix における「制約内の列の合計長が長すぎます」というエラーは何を意味しますか?
質問
制約内の列の合計の長さが長すぎます。以下からのエラー
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.
解決
主キーの制約は 785 バイト (255+20+255+255) です。データベースのページ サイズを 4K に増やすと、かろうじて機能するはずです。また、列を定義するのと同じ幅にする必要があるかどうかも再考する必要があります。
エンジニアの Radhika Gadde が参加するディスカッション グループを見つけました。 説明します 最大インデックス サイズはページ サイズに関係しているということです。彼はこう言います。
テーブルの作成中に発生するエラー。インデックス キーの最大長は次のように計算できます。
[(ページサイズ -93)/5] -1
2Kのように[(2048-93)/5] -1 = [1955/5] -1 = 391-1 = 390
Pagesizeが4kの場合、[(4096-93)/5] -1 = 4003/5-1 = 800-1 = 799です。
他のヒント
上記の回答は完了です。しかし、誰かが再びこの問題に出くわした場合に役立つリンクを追加することを考えました。 Informixのページサイズはオペレーティングシステムに依存します。最近の経験では、Win 2008では4K、OSX-LionおよびSUSE EL4では2Kでした。 「onstat -D」を使用してページサイズを確認できます。
http:// sumedhaを作成しました。 blogspot.com/2013/03/how-to-increase-informix-page-size.html を使用してください。 IBMのドキュメントリンクを参照することも非常に役立ちます。
所属していません StackOverflow