TypeCodes

Oracle数据库SQL操作语句报错的解决

最近在小红帽里面用GCCC编译含Oracle数据库SQL操作语句的C程序时候遇到了下面的7个报错信息,现整理出来Mark一下。

1 错误信息
[-1400][ORA-01400: cannot insert NULL into ("CARDMAIN"."CLR_SFTC000BLOCK0"."SE]
<!--
描述:CARDMAIN数据库用户,CLR_SFTC000BLOCK0数据表,SE表字段

原因:Oracle数据库对于特定类型的非空字段无法区分空值和空字符串

解决:明确数据源中的空值类型,并且在INSERT和UPDATE中必须插入一个值,不能将某个值修改为NULL。
-->
2 错误信息
[-12899][ORA-12899: value too large for column "CARDMAIN"."CLR_SFTC000BLOCK0"."]
<!--
原因:SQL语句中对于某个字段列中的值类型不符合。例如将int类型的值插入到char类型的数据库字段中。

解决:检查字段类型。
-->
3 错误信息
[ORA-00984: column not allowed here]
<!--
原因:一般出现在SQL插入数据时,值引号使用没有成对;又或者应该char类型的字段在插入值时被当做int等类型不加单引号。

解决:当数据以char的形式存在时,应加单引号,则插入数据库就不会出现类似错误。例如当数据以char的形式存在时,应加单引号;又或者在SQL插入语句中出现数组不加单引号,直接执行的话就会出现这个错误。
-->
4 错误信息
[-1756][ORA-01756: quoted string not properly terminated
<!--
原因:SQL语句不完整或有语法错误,例如SQL语句引号内的字符串没有正常结束(即不成对);

解决:检查SQL语句,例如相邻之间的数据是否漏掉了一个单引号。
-->
5 错误信息
[-1008][ORA-01008: not all variables bound] 
<!--
原因/解决:SQL插入语句中漏掉了某个必须字段的值。
-->
6 错误信息
[-1][ORA-00001: unique constraint (CARDMAIN.pk_clr_sftc000block0) violated]
<!--
原因:违反唯一约束,即在INSERT和UPDATE语句中指定值不能已存在于表中,不过允许存在多个NULL值。

解决:原来的oracle数据库中已近存在主键值相同的行了,那么如果插入主键值相同的数据就会造成主键冲突。
-->
打赏支持

Comments »