Я запускаю mysql 5.5 с помощью соединителя mysql 5.1.18. простой запрос стиляResultSetImpl throws NullPointerException
select * from my_table where column_a in ('aaa','bbb',...) and column b=1;
выполняется внутри приложения Java. запрос возвращает набор результатов из 25 тыс. строк, по 8 столбцов в каждом. при чтении результатов в то время как петли
while(rs.next())
{
MyObject c= new MyObject();
c.setA(rs.getString("A"));
c.setB(rs.getString("B"));
c.setC(rs.getString("C"));
...
}
следующий исключение, как правило, в течение первых циклов, но никогда не в том же ряду:
java.lang.NullPointerException
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5720)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5570)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5610)
я взял посмотреть на исходный код в ResultSetImpl .java: 5720 и я вижу следующее:
switch (metadata.getSQLType())
где метаданные
Field metadata = this.fields[internalColumnIndex];
и getSQLType - это не логический приемник, возвращающий int. что интересно, что один и тот же объект метаданных неоднократно называется несколькими строками выше с другими геттерами и не исключает никаких исключений.
Кстати, нет проблемы с запросом выше, когда он выполняется непосредственно в mysql. приложение работает в aws.
любые идеи, как это решить? спасибо.
я попытался воспроизвести это на локальном сервере, но все работало нормально. я собираюсь ограничить количество значений в части «in()» запроса и выполнить несколько выборок до тех пор, пока не будут выполнены все выборки. – atarno
я получил подобную ошибку с MySQL-разъем-Java 5.1.34: Вызванный: java.lang.NullPointerException на com.mysql.jdbc.ResultSetImpl.checkColumnBounds (ResultSetImpl.java:757) в com.mysql. jdbc.ResultSetImpl.getStringInternal (ResultSetImpl.java:5240) в com.mysql.jdbc.ResultSetImpl.getString (ResultSetImpl.java:5162) в (мой код здесь) Я думаю, что это было, вероятно, вызвано ранее исключением: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: после закрытия соединения никакие операции не разрешены. – Shannon
@atarno Вы когда-нибудь находили решение своего вопроса? Я получил аналогичное исключение, используя mysql-connector 5.1.40. Мой вопрос: [здесь] (http://stackoverflow.com/questions/41616564/occasional-nullpointerexception-in-com-mysql-jdbc-resultsetimpl-checkcolumnbound). – Eran