2016-05-06 4 views
0

私は現在のサーバーバージョンをアップグレードするためにsolr6で遊び始めました。Solrj RuntimeException:最初のタプルはメタデータタプルではありません

私はhere上でコードを実行しようとしたが、私は、私は取得していますコードを実行する場合:

java.sql.SQLException: java.lang.RuntimeException: First tuple is not a metadata tuple 
    at org.apache.solr.client.solrj.io.sql.StatementImpl.executeQuery(StatementImpl.java:70) 
    at com.sematext.blog.App.main(App.java:28) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
Caused by: java.lang.RuntimeException: First tuple is not a metadata tuple 
    at org.apache.solr.client.solrj.io.sql.ResultSetImpl.<init>(ResultSetImpl.java:75) 
    at org.apache.solr.client.solrj.io.sql.StatementImpl.executeQuery(StatementImpl.java:67) 
    ... 6 more 

を私のコードは、私はそこに何が起こっているかを把握しようとしたが、



    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.ResultSet; 
    import java.sql.SQLException; 
    import java.sql.Statement; 

    public class App 
    { 
    public static void main(String[] args) 
    { 


     Connection connection = null; 
     Statement statement = null; 
     ResultSet resultSet = null; 

     try{ 
      String connectionString = "jdbc:solr://zkhost:port?collection=test&aggregationMode=map_reduce&numWorkers=1"; 
      connection = DriverManager.getConnection(connectionString); 
      statement = connection.createStatement(); 
      resultSet = statement.executeQuery("select id, text from test limit 5"); 
      while(resultSet.next()){ 
       String id = resultSet.getString("id"); 
       String nickname = resultSet.getString("text"); 

       System.out.println(id + " : " + nickname); 
      } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     }finally{ 
      if (resultSet != null) { 
       try { 
        resultSet.close(); 
       } catch (Exception ex) { 
       } 
      } 
      if (statement != null) { 
       try { 
        statement.close(); 
       } catch (Exception ex) { 
       } 
      } 
      if (connection != null) { 
       try { 
        connection.close(); 
       } catch (Exception ex) { 
       } 
      } 
     } 


    } 
    } 

です上記以外のログはありません。そしてSolrの側では、ログは大丈夫に見える:

2016-05-04 15:52:30.364 INFO (qtp1634198-41) [c:test s:shard1 r:core_node1 x:test] o.a.s.c.S.Request [test] webapp=/solr path=/sql params={includeMetadata=true&numWorkers=1&wt=json&version=2.2&stmt=select+id,+text+from+test+limit+5&aggregationMode=map_reduce} status=0 QTime=3 
2016-05-04 15:52:30.382 INFO (qtp1634198-46) [c:test s:shard1 r:core_node1 x:test] o.a.s.c.S.Request [test] webapp=/solr path=/select params={q=(*:*)&distrib=false&fl=id,text,score&sort=score+desc&rows=5&wt=json&version=2.2} hits=5624 status=0 QTime=1 

例外がスローされ、関連する部分がある: org.apache.solr.client.solrj.io.sql.ResultSetImpl


     Object isMetadata = this.metadataTuple.get("isMetadata"); 
     if(isMetadata == null || !isMetadata.equals(true)) { 
     throw new RuntimeException("First tuple is not a metadata tuple"); 
     } 

とクラスパス:


solr-solrj-6.0.0 
commons-io-2.4 
httpclient-4.4.1 
httpcore-4.4.1 
httpmime-4.4.1 
zookeeper-3.4.6 
stax2-api-3.1.4 
woodstox-core-asl-4.4.1 
noggit-0.6 
jcl-over-slf4j-1.7.7 
slf4j-api-1.7.7 

エラーがSolrのログから「includeMetadata = true」の部分を疑っ(なぜなら、クエリのコードまたは欠落のparamsのエラーのいくつか欠けているのハンドラの起こっている、それがあります私はカールするときにそこにない)?誰もが同様の問題をsolrjとSQLを使用していた?

答えて

0

基本的にこの問題は、6つ前のバージョンのSolrの設定とフォーマットの違いが原因です。

メールグループ内の人達の助けを借りて、以前のバージョンのconfフォルダから直接コピーするのではなく、完全にクリーンインストールを試み、手動でconfigを変更しました。

関連する問題