DriverManager.getConnection()で出てみたり・・・
java.sql.SQLException: [Microsoft][ODBC Driver Manager] 文字列またはバッファの長さが無効です。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3907)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5698)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:354)
at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(JdbcOdbcConnection.java:1503)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:381)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
ResultSet.getString()で出てみたりと発生箇所もさまざま。
java.sql.SQLException: [Microsoft][ODBC Driver Manager] 文字列またはバッファの長さが無効です。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3907)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5698)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:354)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:411)
調べてみるとある特定の環境だけで頻発するようだ。
英語のエラーメッセージ "Invalid string or buffer length" で検索すると、SQL ServerやOracleでも発生している様子。これらは不定期でなくコードの決まった場所で必ず発生するとのことだが、共通するのはx64版のJavaVMを使っていると言うことである。
今エラーが起きているのもx64 JavaVMなので何か関係がありそうである。
JDBC-ODBCをやめてType4ドライバを使うようにしたほうがよさそうだ。