1

我得到约束中列的总长度太长。以下错误

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.
4

2 回答 2

3

您的主键约束为 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

于 2008-10-05T18:16:16.243 回答
0

以上回答完毕。但是考虑添加一些有用的链接,以防有人再次遇到这个问题。Informix 上的页面大小取决于操作系统。根据我最近的经验,我发现它在 Win 2008 上是 4K,在 OSX - Lion 上是 2K,在 SUSE EL4 上是 2K。您可以使用“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

于 2013-03-11T05:36:48.870 回答