DataImportHandlerException: невозможно выполнить запрос

Я пытался найти свою конкретную проблему, но не нашел решения. Я также прочитал вики на DIH и, похоже, все настроил правильно, но мой запрос все еще не работает. спасибо за помощь

Я использую Solr 3.1 с Tomcat 6.0 Windows Server 2003 r2 и SQL 2008.

У меня есть sqljdbc4.jar, находящийся в C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib

Мой файл solrconfig.xml

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
  <str name="config">db-data-config.xml</str>  
  </lst>
  </requestHandler>

Мой db-data-config.xml

<dataConfig>
<dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"      url="://localhost:1433;DatabaseName=KnowledgeBase_DM" user="user" password="password" /> 
<document>
<entity name="Titles" query="SELECT mrID, mrTitle from KnowledgeBase_DM.dbo.AskMe_Data">
<field column="mrID" name="id" />  
<field column="mrTitle" name="title" />  
<entity name="Desc" query="select meDescription from KnowledgeBase_DM.dbo.AskMe_Data">
<field column="meDescription" name="description" />  
</entity>
</entity>
</document>
</dataConfig>

Содержание журнала:

Jan 25, 2012 2:17:37 PM org.apache.solr.handler.dataimport.DataImportHandler processConfiguration
 INFO: Processing configuration from solrconfig.xml: {config=db-data-config.xml}
 Jan 25, 2012 2:17:37 PM org.apache.solr.handler.dataimport.DataImporter loadDataConfig
 INFO: Data Configuration loaded successfully 
Jan 25, 2012 2:17:37 PM org.apache.solr.handler.dataimport.DataImporter doFullImport
 INFO: Starting Full Import 
Jan 25, 2012 2:17:37 PM org.apache.solr.handler.dataimport.SolrWriter readIndexerProperties
 **WARNING: Unable to read: dataimport.properties**
Jan 25, 2012 2:17:37 PM org.apache.solr.handler.dataimport.JdbcDataSource$1 call
 INFO: Creating a connection for entity Titles with URL: ://localhost:1433;DatabaseName=KnowledgeBase_DM
 Jan 25, 2012 2:17:37 PM org.apache.solr.handler.dataimport.JdbcDataSource$1 call
 INFO: Time taken for getConnection(): 0 
Jan 25, 2012 2:17:37 PM org.apache.solr.common.SolrException log 
**SEVERE: Exception while processing: Titles document : SolrInputDocument[{}]:org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT mrID, mrTitle from KnowledgeBase_DM.dbo.AskMe_Data Processing Document # 1**
        at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:72)
         at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:253)
         at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:210)
         at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:39)
         at org.apache.solr.handler.dataimport.DebugLogger$2.getData(DebugLogger.java:188)
         at org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59)
         at org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73)
         at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:238)
         at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:591)
         at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:267)
         at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:186)
         at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:353)
         at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:411)
         at org.apache.solr.handler.dataimport.DataImportHandler.handleRequestBody(DataImportHandler.java:205)
         at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
         at org.apache.solr.core.SolrCore.execute(SolrCore.java:1360) 
        at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)
         at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
         at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
        at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:241)
         ... 28 more 

Jan 25, 2012 2:17:37 PM org.apache.solr.common.SolrException log 
**SEVERE: Full Import failed:org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT mrID, mrTitle from KnowledgeBase_DM.dbo.AskMe_Data Processing Document # 1**
        at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:72)
         at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:253)
         at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:210)
         at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:39)
         at org.apache.solr.handler.dataimport.DebugLogger$2.getData(DebugLogger.java:188)
         at org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59)
         at org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73)
         at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:238)
         at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:591)
         at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:267)
         at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:186)
         at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:353)
         at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:411)
         at org.apache.solr.handler.dataimport.DataImportHandler.handleRequestBody(DataImportHandler.java:205)
         at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
         at org.apache.solr.core.SolrCore.execute(SolrCore.java:1360) 
        at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)
         at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
         at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
        at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:241)
         ... 28 more 

Jan 25, 2012 2:17:37 PM org.apache.solr.update.DirectUpdateHandler2 rollback 
INFO: start rollback 
Jan 25, 2012 2:17:37 PM org.apache.solr.update.DirectUpdateHandler2 rollback 
INFO: end_rollback 
Jan 25, 2012 2:17:37 PM org.apache.solr.core.SolrCore execute 
INFO: [] webapp=/solr path=/select params={start=0&dataConfig=<dataConfig>%0d%0a%09<dataSource+driver%3D"com.microsoft.sqlserver.jdbc.SQLServerDriver"+url%3D"://localhost:1433;DatabaseName%3DKnowledgeBase_DM"+user%3D"user"+password%3D"password"+/>%0d%0a%09<document>%0d%0a%09%09<entity+dataSource%3D"ds1"+name%3D"Titles"+query%3D"SELECT+mrID,+mrTitle+from+KnowledgeBase_DM.dbo.AskMe_Data">%0d%0a%09%09%09<field+column%3D"mrID"+name%3D"id"+/>%0d%0a%09%09%09<field+column%3D"mrTitle"+name%3D"title"+/>%0d%0a%09%09%09<entity+name%3D"Desc"+query%3D"select+meDescription+from+KnowledgeBase_DM.dbo.AskMe_Data">%0d%0a%09%09%09%09<field+column%3D"meDescription"+name%3D"description"+/>%0d%0a%09%09%09</entity>%0d%0a%09%09</entity>%0d%0a%09</document>%0d%0a</dataConfig>&verbose=on&command=full-import&debug=on&qt=/dataimport&rows=10} status=0 QTime=10

person user1170248    schedule 25.01.2012    source источник


Ответы (2)


Похоже, вы забыли описать протокол, который хотите использовать для подключения к базе данных. Для MSSQL это

url="jdbc:sqlserver://localhost:1433;DatabaseName=KnowledgeBase_DM" 

Я почти уверен, что вам не нужно повторно указывать имя базы данных в вашем запросе, поскольку вы выбрали его в своем URL-адресе. Wich делает запрос к:

 query="SELECT mrID, mrTitle from dbo.AskMe_Data"

Я никогда не работал с MSSQL, поэтому я не знаю, следует ли вам использовать dbo.AskMe_Data или просто, как я всегда его использую, AskMe_Data

Я думаю, что этот код должен решить проблему:

<dataConfig>
    <dataSource  type="JdbcDataSource" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
        url="jdbc:sqlserver://localhost:1433;DatabaseName=KnowledgeBase_DM" user="user" password="password" /> 
    <document>
        <entity name="Titles" query="SELECT mrID, mrTitle from dbo.AskMe_Data">
            <field column="mrID" name="id" />  
            <field column="mrTitle" name="title" />  
            <entity name="Desc" query="select meDescription from dbo.AskMe_Data">
                <field column="meDescription" name="description" />  
            </entity>
        </entity>
    </document>
</dataConfig>
person Daan    schedule 25.01.2012
comment
daanTracebuzz, я внес эти изменения, но по-прежнему получаю те же ошибки. Я думаю, что это больше связано с ПРЕДУПРЕЖДЕНИЕМ: невозможно прочитать: dataimport.properties Я не думаю, что это даже доходит до фактического часть выполнения sql еще. По этому поводу есть рабские учебники, и я следовал нескольким, но обычно заканчивал тем же результатом. - person user1170248; 26.01.2012
comment
Что ж, «ПРЕДУПРЕЖДЕНИЕ» в трассировке стека никогда не является точкой, где что-то пошло не так, оно пошло не так, когда оно пыталось выполнить запрос. Там написано «SERVERE», и это настоящая ошибка. - person Daan; 28.01.2012
comment
Я вижу, что мы все еще пропустили объявление типа в источнике данных, я добавлю его - person Daan; 28.01.2012

sqljdbc4.jar следует поместить в другой каталог.

Если это место для ваших файлов конфигурации

C:\Program Files\Apache Software Foundation\Tomcat 6.0\solr\conf\solrconfig.xml

Затем сюда следует поместить sqljdbc4.jar:

C:\Program Files\Apache Software Foundation\Tomcat 6.0\solr\lib\sqljdbc4.jar
person Daan    schedule 28.01.2012
comment
Это также может помочь начать заново с совершенно пустым solr и перестроить все это. Solr может быть немного капризным. - person Daan; 28.01.2012