DB2 错误代码及解决办法-记录

在此记录代码开发过程中,DB2的错误代码,及解决方法。

1、-407 23502 不能把NULL值插到定义为NOT NULL的列中
在这里插入图片描述

其中SQLCODE= -407,SQLSTATE=23502 意思是:不能把NULL值插到NOT NULL的列中

根据这个错误日志,我们怎么找到具体是那个NOT NULL的列。其实这个日志已经给出非常详细的信息。

信息中,SQLERRMC=TBSPACEID=2, TABLEID=675, COLNO=17

SELECT * FROM  SYSCAT.TABLES WHERE TBSPACEID=2 AND TABLEID=675

通过这条语句可以查到相应的SCHEMA和TABLE。
在这里插入图片描述

查询到TABNAME时候,就可以通过COLNO(列顺序号)=17 查询到具体的列

SELECT * FROM SYSCAT.COLUMNS WHERE TABSCHEMA='M' AND TABNAME = 'BILL' AND COlNO='17'

其中,上述SQL中的TABSCHEMA、TABNAME字段值,分别对应上面截图中的对应的值。
在这里插入图片描述
这样子CREATED就是我们要找的具体的列。具体解决办法就需要排查一下,为什么这个列为什么没有值了

关联查询语句

SELECT C.* FROM  SYSCAT.TABLES T LEFT JOIN SYSCAT.COLUMNS C ON T.TABSCHEMA = C.TABSCHEMA AND T.TABNAME =C.TABNAME WHERE T.TBSPACEID=2 AND T.TABLEID=675 AND C.COLNO='17'

2、-668 56018 不能向用EDITPROC定义的表中添加列
在向DB2表中执行INSERT操作时,报错如下
在这里插入图片描述

解决办法:
执行:CALL SYSPROC.ADMIN_CMD('reorg table TABLE_NAME');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值