我的 'M' 表与 'W' (主表,和草稿版数据的表)表结构是一样的,唯一的差别是 'W' 表多一个列 M_IPKEY 它的值 = M 表的 IPKEY,但两个表之间没有外键关系。
一开始以以为记录总长度有什么问题,验证了一下,这些表中字段总长度是1126,我把一个字段加长后也才 1126 + 256 - 64 ,而我把 'W' 表中的 ATTR1/2/3/4/5_VAL 一共 5 个 ATTR?_VAL 列加长到 256 它都没出错,只是这个 'M' 表把其中一个 ATTR1_VAL 加长都不成功,我试了,实际上那个5个字段任意一个都不能加长,但从错误消息中看懂它到底想说什么。
表中没有 clob / blob 这些列,只有 TIME, DATE, SMALLINT, BIGINT 这几种类型的列。
谁提示下这可能是啥毛病,我仔细对比过 W 和 M (W 表多一个列,其它与 M 表完全相同的)如果是列超长那W 表应该先出错。
这条 SQL 成功了:
ALTER TABLE COWDOI000 ALTER ATTR1_VAL SET DATA TYPE VARCHAR(256);
ALTER TABLE COWDOI000 ALTER ATTR2_VAL SET DATA TYPE VARCHAR(256);
ALTER TABLE COWDOI000 ALTER ATTR3_VAL SET DATA TYPE VARCHAR(256);
ALTER TABLE COWDOI000 ALTER ATTR4_VAL SET DATA TYPE VARCHAR(256);
ALTER TABLE COWDOI000 ALTER ATTR5_VAL SET DATA TYPE VARCHAR(256);
这条 SQL 失败了:
ALTER TABLE COMDOI000 ALTER ATTR1_VAL SET DATA TYPE VARCHAR(256);
>[Error] Script lines: 1-1 --------------------------
DB2 SQL Error: SQLCODE=-270, SQLSTATE=42997, SQLERRMC=21, DRIVER=3.50.152
Message: Function not supported (Reason code = "21").. SQLCODE=-270, SQLSTATE=42997, DRIVER=3.50.152