1

有时在生产中我们会遇到这个问题,我试图搜索这个问题的原因,但还没有好运。

com.sybase.jdbc3.jdbc.SybSQLException: The parameter of type 61 did not have a valid value.

当我们手动运行查询时,它工作正常,给出了以下错误。所以我认为查询很好。

        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

你们能帮我找出错误的可能原因吗The parameter of type 61 did not have a valid value.,该字段是char(2)我怀疑的类型。

它很少发生,所以我们无法重现它。任何帮助将不胜感激。

4

3 回答 3

0

这是一条 Sybase 错误消息。

解释:由于无效或非法请求,命令失败。检查语法、语义和权限。采取消息指示的任何纠正措施。

看看文档

尝试捕获异常并在 catch 语句中打印带有值的参数列表,这将使您能够在它发生时检查值。

于 2012-09-13T07:18:02.593 回答
0

不幸的是,您没有向我们展示您的代码和数据库架构。但我认为这个例外非常明显。它说 2 种类型:java 类型和 DB 类型不兼容。

据我了解,您正在尝试插入char或可能char[]插入 DB 类型的列varchar或类似的东西。再次检查。可能您必须在将 char 数组插入 DB 之前将其转换为字符串。

于 2012-09-13T07:19:10.550 回答
0

Sybase 类型 61 是TDS_DATETIME(0x3D = 61 十进制)。这种类型在 中描述TDS 5.0 Reference Pages Datatype Summary
这意味着服务器不喜欢由于大小,内容或TDS数据包中参数之前的参数错误而导致的值。

于 2015-12-25T16:12:10.203 回答