生产中的某个时候我们遇到了这个问题,我试图找出原因,但还没有好运。
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)
类型。
它很少发生,所以我们无法重现它。任何帮助将不胜感激。
答案 0 :(得分:0)
这是Sybase错误消息。
说明:由于无效或非法请求,命令失败。检查语法,语义和权限。采取任何纠正措施。
尝试捕获Exception并使用catch语句中的值打印param列表,这样您就可以在值发生时检查它们。
答案 1 :(得分:0)
不幸的是,您没有向我们展示您的代码和数据库架构。但我认为异常非常清楚。它说有两种类型:java类型和DB类型不兼容。
据我了解,您尝试将char
或char[]
插入varchar
类型的DB列或类似内容中。再次检查。可能你必须在将char数组插入数据库之前将其转换为字符串。
答案 2 :(得分:0)
Sybase类型61是TDS 5.0 Reference Pages
(0x3D = 61十进制)。 Datatype Summary
TDS
中描述了此类型
这意味着服务器不喜欢由于<div class="grid-item"><div class="grid-con" style="background:url(http://image-goes-here.com/img.jpg);"></div></div>
// etc...
数据包之前的参数大小,内容或参数错误而导致的价值。