asticsearch 1.1.1 JDBC речной плагин
{
"type" : "jdbc",
"jdbc" :{
"strategy" : "oneshot",
"index" : "exec_jdbc_index",
"type" : "exec_jdbc_type",
"driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver",
"url" : "jdbc:sqlserver://host:1433;databaseName=MyDB",
"user" : "user",
"password" : "password",
"sql": "Exec MyProcName",
"callable" : true,
"fetchsize" : 1000
}
}
и я получаю следующее исключение:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: A result set was generated for update.
Пожалуйста, посоветуйте, как вызвать хранимый процесс из плагина JDBC River. Simple Select работает нормально.
Конечно, вот трассировка: [ОШИБКА][org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverFlow] com.microsoft.sqlserver.jdbc.SQLServerException: для обновления был создан набор результатов. java.io.IOException: com.microsoft.sqlserver.jdbc.SQLServerException: набор результатов был создан для обновления. в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.fetch(SimpleRiverSource.java:231) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverFlow.move(SimpleRiverFlow.java:12) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverFlow.run(SimpleRiverFlow.java:88) в java.lang.Thread.run(Thread.java:722). Причина: com.microsoft.sqlserver.jdbc.SQLServerException: набор результатов был сгенерирован для обновления. по адресу com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171) по адресу com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:797) exSQLmserver.serm.doExecute(SQLServerStatement.java:676) в com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575) в com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConne00) atj.ava.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179) по адресу com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154) по адресу com.microsoft.sqmentServer.ate.Stever.exserver.js Java:633) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.executeUpdate(SimpleRiverSource.java:522) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource. Java:260) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.fetch(SimpleRiverSource.java:227) ... еще 3
2 ответа
Хорошо, наконец выяснил, где проблема. Вызываемые заявления не были проанализированы как вызываемые.
Я модифицировал SimpleRiverSource
Java-класс, метод fetch(), похоже, что даже вызываемый оператор собирался execute()
или же executeWithParameter(command);
, Я сделал простое изменение, чтобы позвонить executeCallable(command);
прямо там, и он начал работать.
Возвращаете ли вы какой-либо "_id" из сохраненного набора результатов процесса? Я считаю, что _id необходим для индексирования, чтобы сохранить его уникальность. Попробуйте вернуть _id как часть набора результатов. Если это не поможет, не могли бы вы добавить еще одну часть трассировки стека, чтобы понять истинную причину.