Я обнаружил загадочное сообщение об ошибке, выданное сервером Sybase IQ.
com.sybase.jdbc2.jdbc.SybSQLException: ошибка ASA -1001019: функция
не поддерживается в varchars длиннее 255 переменной хоста Length of Bind
превышает MaxLength,
- (df_Heap.cxx 2145)
на com.sybase.jdbc2.tds.Tds.processEed (Tds.java:2636)
на com.sybase.jdbc2.tds.Tds.nextResult (Tds.java:1996)
в com.sybase.jdbc2.jdbc.ResultGetter.nextResult (ResultGetter.java:69)
в com.sybase.jdbc2.jdbc.SybStatement.nextResult (SybStatement.java:204)
в com.sybase.jdbc2.jdbc.SybStatement.nextResult (SybStatement.java:187)
at com.sybase.jdbc2.jdbc.SybStatement.updateLoop (SybStatement.java:1642)
at com.sybase.jdbc2.jdbc.SybStatement.executeUpdate (SybStatement.java:1625)
at com.sybase.jdbc2.jdbc.SybPreparedStatement.executeUpdate (SybPreparedStatement.java:91)
в ibs.dao.CM3RM1DAO.updateToTable (CM3RM1DAO.java:197)
на ibs.dao.CM3RM1DAO.isXMLProcessed (CM3RM1DAO.java:88)
в ibs.xml.parser.XMLParser.parsingXMLIntoBO (XMLParser.java:2125)
на ibs.common.util.MainClass.main (MainClass.java:74)
У нас есть несколько столбцов (DESCRIPTION
и т. Д.) Типа varchar(4000)
. Однако я могу обновить их напрямую, без каких-либо ошибок. И я не вижу никакого кода, определяющего какие-либо переменные связывания, поэтому я понятия не имею, откуда приходит сообщение.
Это код (я его немного изменил):
String sql = "UPDATE TABLEX SET " +
"COMPANY = ?, CUSTOMER_REFERENCE= ?, " +
"STATUS = ?, CONTACT_FIRST_NAME = ?, CONTACT_LAST_NAME = ?, " +
"SEVERITY = ?, PRIORITY_CODE = ?, REQUESTEDDATE = ?, " +
"CLOSE_TIME = ?, LEAD_TIME = ?, CHANGE_REASON = ?, MODTIME = ? WHERE NUMBER = ?";
stmt = conn.prepareStatement(sql);
for loop here
{
stmt.setString(...);
.
.
stmt.executeUpdate();
}
Любая помощь приветствуется