ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> DB2 >> 参数 1 无效:参数索引超出范围。 ERRORCODE=-4461, SQLSTATE=42815

参数 1 无效:参数索引超出范围。 ERRORCODE=-4461, SQLSTATE=42815(1/4)

来源:网络整理     时间:2016-08-22     关键词:

本篇文章主要介绍了" 参数 1 无效:参数索引超出范围。 ERRORCODE=-4461, SQLSTATE=42815",主要涉及到方面的内容,对于DB2感兴趣的同学可以参考一下: Db2据说是最难用的数据库,有幸encounter一下,其他不多说了,我只能来句雪上加霜的话,还真像传说中的那么难用。其难用关键在于对其的不了解,等你被撞的千疮...

Db2据说是最难用的数据库,有幸encounter一下,其他不多说了,我只能来句雪上加霜的话,还真像传说中的那么难用。其难用关键在于对其的不了解,等你被撞的千疮百孔,你也就习惯了,其实也就那样。对于新手,如果跟着教程学,按部就班的估计可以很顺利的用上,像我这种上来从来不看教程,全靠感觉乱点的人来说难免会这里那里撞一鼻子的灰,撞头的事情暂放一边,关键是你撞了,出的错,网上查不到解决方法,这个问问会的人呢,一般说没遇到这种情况,于是就抑郁了,那只能自己在那瞎捣鼓了,而对于这种有问无解或误解的那些来自google出来的答案又会让我再拐上几个弯路。不过这也有个好处,碰到问题多了,解决的问题多了,至少以后出了问题自己知道在哪,那么也就成了大师级的人物,也不会成为所谓的会的人了,至少别人问我,我不会说我没碰到这种情况,吼吼,上述废话主要是告诉大家,要静下心来,自己多研究哈哈。发完牢骚,进入正题。

1. db2的字符集的问题,先看下面的图 

上图中查询的数据是以binary的形式显示的,需要手动的去选择编码格式才能看到实际的数据。

出现这种情况有2种原因

第一种是建立数据库的时候没有指定字符集,如下图,在中国,我觉得哈哈我要指定为utf-8.

第二种情况,建表字段的时候,点了下图的那个位数据。 

第二个问题:用户空间userspace的问题。

如果你的表没有太大数据,那么对于userspace的问题,可以在建立表的时候用默认的就可以,但是实际上大家的表估计都会有大字段的问题。那么这个用户空间,在建表的时候选择建立数据库的时候默认建立的userspace1一般可以满足需求,如下图,

至于后面那2个,开始给我了错觉,我以为大字段需要用后面的2者之一或之二,于是就那捣鼓捣鼓,捣鼓的头破血流,最后放弃了,看下面的文章,自己研究一下吧http://my.oschina.net/hcom/blog/4430

第三个问题:所使用的第三方连接工具的问题。

我用过多个,丫的,装了三个,最后选了Toad for DB2 Freeware 4.0,我对toad印象甚是好哈哈,果然这个工具不出我所料的好用。点这个实例和节点自己填写没多大限制,是本地连接的描述。我是这么理解的。填写数据库名称,断口默认的50000,然后next到底就ok了。至于这个工具的使用自己琢磨吧。 

第四个问题:主键的自增长问题

建表的时候主键的值的设置,看下图 

这个界面看上去真丫的朴素,k害死我了,太轻敌下拉列表里选identity选项

这样设置,去查一下网上一堆的同样的解释,能用么丫的,还是我人品太差,我的就是不能用,真的希望大家在引用别人的文章的时候自己先动手试一下,如果真的可以再引用!!这个选项生成的所有主键都是1,因为我的主键不重要就这么用了,没空研究太多。至于其他文章说的sequence我没去试。

com.ibm.db2.jcc.am.oo: DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1;DB2ADMIN.TEST, DRIVER=3.58.82

这个原因我的解决方法是:去掉了主键约束,因为在网上没有找到答案,也没去查官方文档,自己在那对着数据看半天,可能是因为我插入数据的主键值相同。

第五个问题:有大字段表的建表问题,以及大字段的读写问题

上图中,如果不去了解一下db2关于clob blob的小知识,那么这样默认的建表了,就等着哭吧,可能我没这种意识去想这个字段的问题就用了oracle的一贯的做法,然后悲剧了,知道看了网上关于大字段建表的sql语句。有时候工具提供了方便的同时也给你养成了隐性的小破习惯,不会写sql语句。

这里是什么意思,不能自己瞎想了,length不是指db2默认的这个字段的大小为1g,可能别人不这么想,我这么想,说明我傻,如果和我一样想,懒得动脑的人,也是傻。Lob unit点开

傻了吧,那么length该填什么了,综合所述该如下设置,为啥

如果用了默认的设置

那数据是肯定插不进去的,相信我没戳的。

相关图片

相关文章