Java 在数据库中插入记录时出错
在生产过程中,我们有时会遇到这个问题,我试图寻找原因,但还没有找到好运气 com.sybase.jdbc3.jdbc.SybSQLException:类型61的参数没有有效值 当我们手动运行查询时,它工作正常,出现以下错误。所以我认为查询正常Java 在数据库中插入记录时出错,java,spring,sybase,Java,Spring,Sybase,在生产过程中,我们有时会遇到这个问题,我试图寻找原因,但还没有找到好运气 com.sybase.jdbc3.jdbc.SybSQLException:类型61的参数没有有效值 当我们手动运行查询时,它工作正常,出现以下错误。所以我认为查询正常 SQL state [ZZZZZ]; error code [3814]; The parameter of type 61 did not have a valid value. ; nested exception is com
SQL state [ZZZZZ]; error code [3814]; The parameter of type 61 did not have a valid value.
; nested exception is com.sybase.jdbc3.jdbc.SybSQLException: The parameter of type 61 did not have a valid value.
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:602)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:811)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:833)
at org.springframework.jdbc.object.SqlUpdate.updateByNamedParam(SqlUpdate.java:248)
at com.cachestore.sql.PTMSSqlUpdate.updateByNamedParam(PTMSSqlUpdate.java:35)
at com.cachestore.PTMSCacheStore.store(PTMSCacheStore.java:277)
... 6 more
Caused by: com.sybase.jdbc3.jdbc.SybSQLException: The parameter of type 61 did not have a valid value.
at com.sybase.jdbc3.tds.Tds.a(Unknown Source)
at com.sybase.jdbc3.tds.Tds.nextResult(Unknown Source)
at com.sybase.jdbc3.jdbc.ResultGetter.nextResult(Unknown Source)
at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
at com.sybase.jdbc3.jdbc.SybStatement.updateLoop(Unknown Source)
at com.sybase.jdbc3.jdbc.SybStatement.executeUpdate(Unknown Source)
at com.sybase.jdbc3.jdbc.SybPreparedStatement.executeUpdate(Unknown Source)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:817)
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:1)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:586)
... 11 more
你们能帮我找出导致错误的可能原因吗?类型61的参数没有有效值,我怀疑这个字段是char2类型的
这种情况很少发生,因此我们无法复制它。任何帮助都将不胜感激 这是一条Sybase错误消息 说明:由于请求无效或非法,命令失败。检查语法、语义和权限。采取信息指示的任何纠正措施 看一看
尝试捕获异常并在catch语句中打印带有值的参数列表,这将使您能够在异常发生时检查值。不幸的是,您没有向我们显示代码和数据库架构。但我认为这一例外非常明显。它说有两种类型:java类型和DB类型不兼容 据我所知,您正在尝试将char或可能是char[]插入varchar或类似类型的DB列中。再检查一遍。在将字符数组插入数据库之前,可能必须将其转换为字符串。Sybase type 61是TDS_DATETIME 0x3D=61十进制。TDS 5.0参考页数据类型摘要中描述了这些类型。
这意味着服务器不喜欢这个值,因为它的大小、内容或者TDS数据包中参数之前的参数有问题。在DB中,我们有类型为char2的列。