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

残念ながら、コードと DB スキーマを見せてくれませんでした。しかし、その例外は非常に明確だと思います。Java 型と DB 型の 2 種類は互換性がないということです。

私が理解している限り、挿入しようとしている、またはタイプの DB 列などに挿入しようとしているchar可能性があります。これをもう一度確認してください。おそらく、DB に挿入する前に char 配列を文字列に変換する必要があります。char[]varchar

于 2012-09-13T07:19:10.550 に答える
0

これは、Sybase のエラー メッセージです。

説明: 無効または不正な要求のため、コマンドが失敗しました。構文、セマンティクス、および権限を確認してください。メッセージに示されている修正処置を行ってください。

ドキュメンテーションを見てみましょう

例外をキャッチして、catch ステートメントの値を含むパラメーター リストを出力してみてください。これにより、発生したときに値を確認できます。

于 2012-09-13T07:18:02.593 に答える