加载中…
个人资料
菜菜
菜菜
  • 博客等级:
  • 博客积分:0
  • 博客访问:813
  • 关注人气:2
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
博文
环境
spring4.0 + Mybatis + Oracle 10.2.0.1.0

jar包:  ojdbc14-10.2.0.4.0.jar

问题描述
当类型为CLOB的字段(我的是content)长度大于18000+后,sql报错:
java.sql.SQLException: ORA-01460:转换请求无法实现或不合理解决。截图如下:

问题分析
1、可以排除程序或sql、驱动等出问题的可能。因为字段长度在18000的时候可以插入。只在字符串很长时出现。
2、java程序的默认中文字符集是UTF-8(此处字符集应该不影响插入),oracle字符集是GBK。因字符串中也有少量数字、字母,所以估计数据库一次可插入的数据在<18000*2。这与oracle中字符串可支持的最大长度32767隐约对应。初步估计是java把Mybatis里的Clob先处理成
分类: DB
查询数据时报-206错误最大的可能是列名确实不在你要查的表里,可能是拼错了,缺少列等等情况。

还有一种情况常在刚建表不久出现。
此时,表,列名都存在。即使你直接将列名(如 id)拷出来,写成:select id from student 仍会报-206错误。
这是因为系统存储的列名有问题。
执行  select colname from syscat.columns where tabname like 'student'  查看取出的colname 与你的列名是否一致,并且一定要是大写。如果不是大写,那么问题就在出在那儿。
因为db2处理查询时是按大写的列名检索syscat.columns表。而db2是区分大小写的。小写的列名就识别不了。
这种情况是因为建表时列名上加了引号,列名入syscat.columns时按照字符串处理,没有自动转大写导致的。

解决办法:drop掉原表,重新建表。重建表时注意表名不能加引号!!
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有