Return-Path: Delivered-To: apmail-incubator-ibatis-user-java-archive@www.apache.org Received: (qmail 43340 invoked from network); 9 Jun 2005 17:47:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 9 Jun 2005 17:47:39 -0000 Received: (qmail 16487 invoked by uid 500); 9 Jun 2005 17:47:37 -0000 Delivered-To: apmail-incubator-ibatis-user-java-archive@incubator.apache.org Received: (qmail 16458 invoked by uid 500); 9 Jun 2005 17:47:37 -0000 Mailing-List: contact ibatis-user-java-help@incubator.apache.org; run by ezmlm Precedence: bulk Reply-To: ibatis-user-java@incubator.apache.org List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list ibatis-user-java@incubator.apache.org Received: (qmail 16444 invoked by uid 99); 9 Jun 2005 17:47:37 -0000 X-ASF-Spam-Status: No, hits=0.6 required=10.0 tests=FORGED_RCVD_HELO,FROM_ENDS_IN_NUMS X-Spam-Check-By: apache.org Received-SPF: pass (hermes.apache.org: local policy) Received: from poros.telenet-ops.be (HELO poros.telenet-ops.be) (195.130.132.44) by apache.org (qpsmtpd/0.28) with ESMTP; Thu, 09 Jun 2005 10:47:34 -0700 Received: from localhost (localhost.localdomain [127.0.0.1]) by poros.telenet-ops.be (Postfix) with SMTP id CB01D3BC07C for ; Thu, 9 Jun 2005 19:47:22 +0200 (MEST) Received: from personal.telenet.be (dD5764D07.access.telenet.be [213.118.77.7]) by poros.telenet-ops.be (Postfix) with SMTP id 3707C3BC069 for ; Thu, 9 Jun 2005 19:47:22 +0200 (MEST) From: Sven Boden To: ibatis-user-java@incubator.apache.org Subject: Re: 32k limitations for clob/blob? Date: Thu, 09 Jun 2005 19:44:01 +0200 Message-ID: References: <42A6FF29.5080107@ateikon.com> <2fe5ef5b05060807356540f7b6@mail.gmail.com> <2fe5ef5b05060807576ea0a9d3@mail.gmail.com> <2fe5ef5b05060808337d4d2e1@mail.gmail.com> <42A861EA.7070602@umich.edu> <2fe5ef5b05060909522ee0fbf7@mail.gmail.com> <42A876EE.6010108@umich.edu> <11uga19t8c0grffrgts4jec82l2uf5gfra@4ax.com> <42A87D79.50900@umich.edu> In-Reply-To: <42A87D79.50900@umich.edu> X-Mailer: Forte Agent 1.93/32.576 English (American) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N In your trace it states: Check the statement (update failed). I would have to check the iBatis code what's actually happening (and probably would need a few more pieces of information from your setup) but LOBs/CLOBs can't be updated, only deleted/inserted. =46rom the Oracle documentation: http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a85397/f= unction.htm#79466 Regards, Sven Boden On Thu, 09 Jun 2005 13:33:45 -0400, you wrote: >Thanks for your info. I change my sql to be: > > > insert into x_clob > (name,c) > values > (#name:VARCHAR#,to_lob(#c:VARCHAR#)) > > >and got the following errors: > > [java] size=3D1819572, 1819572 > [java] org.springframework.jdbc.BadSqlGrammarException: Bad SQL=20 >grammar [(m >apped statement)] in task 'SqlMapClientTemplate'; nested exception is=20 >com.ibatis >.common.jdbc.exception.NestedSQLException: > [java] --- The error occurred in ibatis_map/AccessDB.xml. > [java] --- The error occurred while applying a parameter map. > [java] --- Check the insert_clob-InlineParameterMap. > [java] --- Check the statement (update failed). > [java] --- Cause: java.sql.SQLException: ORA-00932: inconsistent=20 >datatypes: > expected - got BINARY > >-Henry > >Sven Boden wrote: > >>Item 1 is String limitation. >> >>Item 2 I've never hit when using iBatis. I did get it however a few >>times in PL-SQL... the problem was then solved by using the Oracle >>function to_lob() while inserting the lob. >> >>Regards, >>Sven Boden >> >>On Thu, 09 Jun 2005 13:05:50 -0400, you wrote: >> >> =20 >> >>>No, I didn't. However, I got more details on the errors. >>>1. If I insert into CLOB or LONG as jdbc type with String in java, I = got=20 >>>the 32K limitation error. >>> >>> [java] size=3D1551138, 1551138 >>> [java] org.springframework.jdbc.UncategorizedSQLException:=20 >>>(SqlMapClientTem >>>plate): encountered SQLException [ >>> [java] --- The error occurred in ibatis_map/AccessDB.xml. >>> [java] --- The error occurred while applying a parameter map. >>> [java] --- Check the insert_long-InlineParameterMap. >>> [java] --- Check the parameter mapping for the 'l' property. >>> [java] --- Cause: java.sql.SQLException: setString can only = process=20 >>>strings >>>of less than 32766 chararacters]; nested exception is=20 >>>com.ibatis.common.jdbc.ex >>>ception.NestedSQLException: >>> [java] --- The error occurred in ibatis_map/AccessDB.xml. >>> [java] --- The error occurred while applying a parameter map. >>> [java] --- Check the insert_long-InlineParameterMap. >>> [java] --- Check the parameter mapping for the 'l' property. >>> [java] --- Cause: java.sql.SQLException: setString can only = process=20 >>>strings >>>of less than 32766 chararacters >>> >>>2. If I insert into CLOB or LONG as jdbc type with byte[] in java, I = got=20 >>>the following errors: >>> >>> [java] size=3D1461140, 1461140 >>> [java] org.springframework.jdbc.UncategorizedSQLException:=20 >>>(SqlMapClientTem >>>plate): encountered SQLException [ >>> [java] --- The error occurred in ibatis_map/AccessDB.xml. >>> [java] --- The error occurred while applying a parameter map. >>> [java] --- Check the insert_long-InlineParameterMap. >>> [java] --- Check the statement (update failed). >>> [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a = LONG=20 >>>value o >>>nly for insert into a LONG column >>> [java] ]; nested exception is=20 >>>com.ibatis.common.jdbc.exception.NestedSQLExc >>>eption: >>> [java] --- The error occurred in ibatis_map/AccessDB.xml. >>> [java] --- The error occurred while applying a parameter map. >>> [java] --- Check the insert_long-InlineParameterMap. >>> [java] --- Check the statement (update failed). >>> [java] --- Cause: java.sql.SQLException: ORA-01461: can bind a = LONG=20 >>>value o >>>nly for insert into a LONG column >>> >>>Any idea? >>> >>>-Henry >>> >>> >>>Brandon Goodin wrote: >>> >>> =20 >>> >>>>I'm not aware of this limitation. We have run into similar things >>>>before with the oracle driver. But, upgrading has always fixed it. >>>>Have you attempted a test using straight JDBC? >>>> >>>>Brandon >>>> >>>>On 6/9/05, Henry Lu wrote: >>>>=20 >>>> >>>> =20 >>>> >>>>>I got the following errors when I insert a large text into a CLOB in >>>>>oracle by using iBatis. How do I resulve it? I am using Oracle 10G = jdbc >>>>>deiver. >>>>> >>>>> >>>>>org.springframework.jdbc.UncategorizedSQLException: >>>>>(SqlMapClientTemplate): encountered SQLException [ >>>>>--- The error occurred in >>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. >>>>>--- The error occurred while applying a parameter map. >>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. >>>>>--- Check the parameter mapping for the 'INFO_TEXT' property. >>>>>--- Cause: java.sql.SQLException: setString can only process strings= of >>>>>less than 32766 chararacters]; nested exception is >>>>>com.ibatis.common.jdbc.exception.NestedSQLException: >>>>>--- The error occurred in >>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. >>>>>--- The error occurred while applying a parameter map. >>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. >>>>>--- Check the parameter mapping for the 'INFO_TEXT' property. >>>>>--- Cause: java.sql.SQLException: setString can only process strings= of >>>>>less than 32766 chararacters >>>>>org.springframework.jdbc.UncategorizedSQLException: >>>>>(SqlMapClientTemplate): encountered SQLException [ >>>>>--- The error occurred in >>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. >>>>>--- The error occurred while applying a parameter map. >>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. >>>>>--- Check the parameter mapping for the 'INFO_TEXT' property. >>>>>--- Cause: java.sql.SQLException: setString can only process strings= of >>>>>less than 32766 chararacters]; nested exception is >>>>>com.ibatis.common.jdbc.exception.NestedSQLException: >>>>>--- The error occurred in >>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. >>>>>--- The error occurred while applying a parameter map. >>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. >>>>>--- Check the parameter mapping for the 'INFO_TEXT' property. >>>>>--- Cause: java.sql.SQLException: setString can only process strings= of >>>>>less than 32766 chararacters >>>>>com.ibatis.common.jdbc.exception.NestedSQLException: >>>>>--- The error occurred in >>>>>edu/umich/med/umms/tgsubmission/dao/ibatis_map/tgs_info_trainee.xml. >>>>>--- The error occurred while applying a parameter map. >>>>>--- Check the Tgs_info_trainee.insert_Tgs_info_trainee_map. >>>>>--- Check the parameter mapping for the 'INFO_TEXT' property. >>>>>--- Cause: java.sql.SQLException: setString can only process strings= of >>>>>less than 32766 chararacters >>>>>Caused by: java.sql.SQLException: setString can only process strings= of >>>>>less than 32766 chararacters >>>>> at >>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeU= pdate(GeneralStatement.java:87) >>>>> at >>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapEx= ecutorDelegate.java:500) >>>>> at >>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSession= Impl.java:89) >>>>> at >>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapCli= ent(SqlMapClientTemplate.java:282) >>>>> at >>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapCl= ientTemplate.java:140) >>>>> at >>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapCli= entTemplate.java:280) >>>>> at >>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.inser= tTgs_info_trainee(Tgs_info_traineeDaoSql.java:67) >>>>> at >>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestC= ase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100) >>>>> at >>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestC= ase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown = Source) >>>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>>> at junit.framework.TestCase.runTest(TestCase.java:154) >>>>> at junit.framework.TestCase.runBare(TestCase.java:127) >>>>> at junit.framework.TestResult$1.protect(TestResult.java:106) >>>>> at junit.framework.TestResult.runProtected(TestResult.java:124) >>>>> at junit.framework.TestResult.run(TestResult.java:109) >>>>> at junit.framework.TestCase.run(TestCase.java:118) >>>>> at junit.framework.TestSuite.runTest(TestSuite.java:208) >>>>> at junit.framework.TestSuite.run(TestSuite.java:203) >>>>> at >>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(Remo= teTestRunner.java:474) >>>>> at >>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTes= tRunner.java:342) >>>>> at >>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTe= stRunner.java:194) >>>>>Caused by: java.sql.SQLException: setString can only process strings= of >>>>>less than 32766 chararacters >>>>> at >>>>>oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.jav= a:125) >>>>> at >>>>>oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.jav= a:162) >>>>> at >>>>>oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.jav= a:227) >>>>> at >>>>>oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OracleP= reparedStatement.java:4588) >>>>> at >>>>>oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedS= tatement.java:4559) >>>>> at >>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(Paramete= rSetterImpl.java:139) >>>>> at >>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(C= lobTypeHandlerCallback.java:45) >>>>> at >>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomT= ypeHandler.java:46) >>>>> at >>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPara= meter(BasicParameterMap.java:165) >>>>> at >>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPara= meters(BasicParameterMap.java:125) >>>>> at >>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExec= utor.java:80) >>>>> at >>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecu= teUpdate(GeneralStatement.java:196) >>>>> at >>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeU= pdate(GeneralStatement.java:74) >>>>> ... 23 more >>>>> >>>>>Caused by: >>>>>java.sql.SQLException: setString can only process strings of less = than >>>>>32766 chararacters >>>>> at >>>>>oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.jav= a:125) >>>>> at >>>>>oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.jav= a:162) >>>>> at >>>>>oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.jav= a:227) >>>>> at >>>>>oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OracleP= reparedStatement.java:4588) >>>>> at >>>>>oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedS= tatement.java:4559) >>>>> at >>>>>com.ibatis.sqlmap.engine.type.ParameterSetterImpl.setString(Paramete= rSetterImpl.java:139) >>>>> at >>>>>com.ibatis.sqlmap.engine.type.ClobTypeHandlerCallback.setParameter(C= lobTypeHandlerCallback.java:45) >>>>> at >>>>>com.ibatis.sqlmap.engine.type.CustomTypeHandler.setParameter(CustomT= ypeHandler.java:46) >>>>> at >>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPara= meter(BasicParameterMap.java:165) >>>>> at >>>>>com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setPara= meters(BasicParameterMap.java:125) >>>>> at >>>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExec= utor.java:80) >>>>> at >>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecu= teUpdate(GeneralStatement.java:196) >>>>> at >>>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeU= pdate(GeneralStatement.java:74) >>>>> at >>>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapEx= ecutorDelegate.java:500) >>>>> at >>>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSession= Impl.java:89) >>>>> at >>>>>org.springframework.orm.ibatis.SqlMapClientTemplate$11.doInSqlMapCli= ent(SqlMapClientTemplate.java:282) >>>>> at >>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapCl= ientTemplate.java:140) >>>>> at >>>>>org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapCli= entTemplate.java:280) >>>>> at >>>>>edu.umich.med.umms.tgsubmission.dao.sql.Tgs_info_traineeDaoSql.inser= tTgs_info_trainee(Tgs_info_traineeDaoSql.java:67) >>>>> at >>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestC= ase.doTestInsert(Tgs_info_traineeDaoSqlTestCase.java:100) >>>>> at >>>>>unit.edu.umich.med.umms.tgsubmission.dao.Tgs_info_traineeDaoSqlTestC= ase.testAll(Tgs_info_traineeDaoSqlTestCase.java:64) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown = Source) >>>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>>> at junit.framework.TestCase.runTest(TestCase.java:154) >>>>> at junit.framework.TestCase.runBare(TestCase.java:127) >>>>> at junit.framework.TestResult$1.protect(TestResult.java:106) >>>>> at junit.framework.TestResult.runProtected(TestResult.java:124) >>>>> at junit.framework.TestResult.run(TestResult.java:109) >>>>> at junit.framework.TestCase.run(TestCase.java:118) >>>>> at junit.framework.TestSuite.runTest(TestSuite.java:208) >>>>> at junit.framework.TestSuite.run(TestSuite.java:203) >>>>> at >>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(Remo= teTestRunner.java:474) >>>>> at >>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTes= tRunner.java:342) >>>>> at >>>>>org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTe= stRunner.java:194) >>>>> >>>>>-Henry >>>>> >>>>> =20 >>>>> >>>>> =20 >>>>> >>>>=20 >>>> >>>> =20 >>>> >> >> >> >> =20 >>