1
{
  "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 插件调用存储过程。简单选择工作正常。

当然,这是跟踪:[错误][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:129)在 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:

4

2 回答 2

0

您是否从存储的 proc 结果集中返回任何“_id”?我相信索引中需要 _id 以保持它的唯一性。尝试将 _id 作为结果集的一部分返回。如果它没有帮助,请您添加更多的堆栈跟踪部分以了解实际的根本原因。

于 2014-05-06T12:18:17.310 回答
0

好的,终于发现问题出在哪里了。可调用语句未解析为可调用。

我修改SimpleRiverSource了 java 类,方法 fetch(),看起来连可调用语句都将要使用execute()or executeWithParameter(command);。我做了一个简单的改变, executeCallable(command); 直接打电话给那里,它开始工作了。

于 2014-05-09T23:41:44.513 回答