今天写了个程序要实现:让用户创作模板,而且是带格式的模板,保存起来留作以后使用。所以这些模板的数据要保存到数据库了。
我是这么写的<code>templateVO.setBlobID(blobService.addBlob(blobVO));</code>
基本上意思很清楚就是向Oracle的blob字段里添加一条记录。但是问题来:
每次执行完毕总是报:<code>java.io.IOException: ORA-22993: specified input amount is greater than(ORA-22993: 指定的输入总数大于实际的来源总数)</code>
一番Google,http://blog.csdn.net/lihan6415151528/archive/2009/07/15/4351142.aspx .询问同事后知是Oracle版本的问题,自己使用:
<code>select * from v$version;
查询结果:
<TABLE BORDER="1">
<TR><TH>BANNER</TH></TR>
<TR><TD>Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod</TD></TR>
<TR><TD>PL/SQL Release 10.2.0.1.0 - Production</TD></TR>
<TR><TD>CORE 10.2.0.1.0 Production</TD></TR>
<TR><TD>TNS for 32-bit Windows: Version 10.2.0.1.0 - Production</TD></TR>
<TR><TD>NLSRTL Version 10.2.0.1.0 - Production</TD></TR>
</TABLE>
</code>
果然是驱动不对,我自己的是oracle 9.0.2的驱动classes12.jar
而链接的服务器是10.2.0.1。
寻找到数据库服务器copy到本机,原想就圆满了吧。但:错误码:
<code>Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver'/no suitable driver</code>
纵使我找到n多帖子,但是大多数是这个问题都是"Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect 'null'" 引起的,不是我的情况。自己反复使用9i和10g的包替换,重启,发现只是包的差别,9i就是正常10g不行,也就是这条路也是不行的。
但是我忽然意识到许多人也使用了导入附件的功能,为什么他们好使呢?带着这样的疑问,查看了别人写的导入功能。发现在我的系统上别人的功能也是不好使的;但是在别人的机器上确实好使的。。
这下好办了,就是比较我们两个系统的运行环境呗。jdk都是1.5;tomcat,我的是6,她的是5,这个导致问题的可能性不大;最后发现她使用的Oracle驱动是ojdbc14.jar,查询MANIFEST.MF,Oracle版本是9.0.2.,传到我机器和我的ojdbc比较发现她的是<code>Implementation-Title: "ojdbc14.jar"
Implementation-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
Implementation-Vendor: "Oracle Corporation"
Implementation-Time: "Tue Apr 6 01:10:57 2004"</code>
而我的是<code>Implementation-Title: "ojdbc14.jar"
Implementation-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
Implementation-Vendor: "Oracle Corporation"
Implementation-Time: "Thu Apr 25 23:14:02 2002"</code>
时间跨了2年,大小差30k,最重要的是前者的<code>Name: oracle/sql/BLOB.class
Digest-Algorithms: SHA MD5
SHA-Digest: pKeIUjbb0bG29Fp+YyMUnpXdqL0=
MD5-Digest: 84Ixh0QhrIJFPxfQJQSlAw==</code>
而我的<code>Name: oracle/sql/BLOB.class
Digest-Algorithms: SHA MD5
SHA-Digest: YdCoSwsZJODsKxo8/Im33SiW0eg=
MD5-Digest: DG0ZZCIRtwfrRDZ3i6Pslg==</code>
问题找到了使用blob文件不一样,说明我的不兼容的。
之后由遇到了如何判断一字段输入是否大于数据库里的存储——典型的中文字符集问题。
1.页面使用utf8传值到servlet,servlet使用utf8解释,在servlet里看到的是正常的汉字,但是有个问题,这些bytes(不是Byte)是如何被保存到数据库的,使用(<a href="http://phoenix007.iteye.com/blog/278004#comments">这里</a>);
<code>select userenv('language') from dual;</code>
发现是gbk的,这下好,知道是1个存2个字段。
问题就到这里。。
其实我想表达是:
我前面使用的策略是——1.直面问题,直到找到原因。可以理解为是直线。就是看产生结果的原因。
2。我使用的绕过的原则。我不需要知道为什么不好使,我只需要知道一种方法,让他好使,那就是抄别人的东西。
两种方式是各有千秋,我喜欢第一种直接,干脆,彻底。但是时间耗费。。
第二种迂回,但是能马上解决问题。。
所以合适的选择解决问题的方案是日常工作生活学习的必备技能。
分享到:
相关推荐
ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法
这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决这些问题。 ORA-28040错误是因为客户端和数据库服务器在版本兼容性上存在不匹配。...
在Oracle数据库管理过程中,遇到ORA-00132和ORA-00214这类错误时,往往意味着数据库配置或启动过程中出现了问题。下面将对这两个错误进行详细解析,并给出相应的解决方案。 #### 二、ORA-00132: Syntax Error or ...
摘要:本文主要解决ORACLE 8I数据库应用EXP工具时ORA-06553报错的问题,分析出现问题的原因,并提供了正确的解决方法和措施。 知识点1:Oracle 8I数据库EXP工具的应用 Oracle 8I数据库EXP工具是Oracle数据库提供...
解决ora-04031共享内存问题解决ora-04031共享内存问题解决ora-04031共享内存问题解决ora-04031共享内存问题
本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误概述 #### ORA-39002: invalid operation 此错误表示执行的操作无效,可能是由于某些配置或环境设置不正确导致的。例如,...
### 离线误删空间文件导致的ORA-01033及ORA-01145问题的解决办法 #### 概述 在Oracle数据库管理过程中,偶尔会遇到因误操作导致的数据文件出现问题的情况,例如误删除数据文件或者数据文件损坏等。这些问题可能会...
### Oracle 10g启动后报ORA-16038错误的解决方法 #### 错误概述 在启动Oracle 10g数据库时遇到ORA-16038错误,该错误通常与归档日志操作有关。具体错误信息为: ``` ORA-16038: log 1 sequence #230 cannot be ...
本文将详细介绍如何在Windows和Linux操作系统下解决ORA-00702错误。 **ORA-00702错误解析** ORA-00702错误信息表明数据库实例试图访问一个尚未完全初始化的数据文件或控制文件。这可能是由于数据库在不正常的情况下...
ORA-12541 TNSno listener 的解决方案 ORA-12541 TNSno listener 的解决方案
"ora-28056解决方法" Oracle 11g中,ora-28056错误是由于写入审核记录到Windows事件日志失败所致。该错误通常会导致数据库不可用,无法连接到数据库。 解决方法: 1. 打开事件查看器(Event Viewer):在 Windows...
oracle网络配置(listener_ora-sqlnet_ora-tnsnames_ora).mht
在创建Oracle数据库连接时遇到的错误ORA-01017和ORA-02063涉及到用户认证问题以及Oracle数据库版本之间的差异处理。ORA-01017错误表示用户名或密码无效,登录被拒绝,而ORA-02063则通常表示在Oracle数据库之间进行...
### Oracle12cRAC数据库出现ora-12520, ora-12516问题解析 #### 一、问题概述 在使用Oracle12cRAC(Real Application Clusters)数据库的过程中,可能会遇到客户端连接时出现ora-12520或ora-12516错误的问题。这两...
Oracle数据库发生ORA-04031错误原因浅析及处理 Oracle数据库是甲骨文公司提供的...本文通过对ORA-04031错误的分析和解决方法的介绍,旨在帮助读者更好地理解Oracle数据库中的ORA-04031错误,并提供了实用的解决方法。
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
本文旨在详细介绍ORA-12518错误的成因、常见表现形式以及具体的故障排查方法,以帮助读者在实际工作中能够更高效地解决这一问题。 #### 目的 本文旨在探讨如何接近并解决ORA-12518/TNS-12518错误,并提供详细的...
通过以上方法,我们可以有效地解决ORA-29275错误,并提高Oracle数据库的整体稳定性和数据完整性。需要注意的是,在实际操作过程中,应当根据具体情况选择最适合的解决方案。例如,在某些情况下,调整字段长度可能是...
### 创建物化视图ORA-12014错误解决方法 #### 背景介绍 在Oracle数据库中,物化视图(Materialized View)是一种用于优化查询性能的重要工具。它预先计算并存储了复杂的查询结果,从而在实际查询时能够快速地返回...