2013-12-19 56 views
1

我試圖使一個完整的進口使用Solr和接收以下錯誤:Solr的數據源錯誤

DataImporter Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver: com.microsoft.sqlserver.jdbc.SQLServerDriver Processing Document # 1 
Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver: com.microsoft.sqlserver.jdbc.SQLServerDriver Processing Document # 1 
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270) 
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:411) 
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:476) 
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:457) 
Caused by: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver: com.microsoft.sqlserver.jdbc.SQLServerDriver Processing Document # 1 
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:410) 
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:323) 
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:231) 
    ... 3 more 
Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver: com.microsoft.sqlserver.jdbc.SQLServerDriver Processing Document # 1 
    at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:71) 
    at org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:116) 
    at org.apache.solr.handler.dataimport.JdbcDataSource.init(JdbcDataSource.java:64) 
    at org.apache.solr.handler.dataimport.DataImporter.getDataSourceInstance(DataImporter.java:383) 
    at org.apache.solr.handler.dataimport.ContextImpl.getDataSource(ContextImpl.java:99) 
    at org.apache.solr.handler.dataimport.SqlEntityProcessor.init(SqlEntityProcessor.java:53) 
    at org.apache.solr.handler.dataimport.EntityProcessorWrapper.init(EntityProcessorWrapper.java:74) 
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:427) 
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:408) 
    ... 5 more 
Caused by: java.lang.ClassNotFoundException: Unable to load com.microsoft.sqlserver.jdbc.SQLServerDriver or org.apache.solr.handler.dataimport.com.microsoft.sqlserver.jdbc.SQLServerDriver 
    at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:916) 
    at org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:114) 
    ... 12 more 
Caused by: org.apache.solr.common.SolrException: Error loading class 'com.microsoft.sqlserver.jdbc.SQLServerDriver' 
    at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:470) 
    at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:401) 
    at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:906) 
    ... 13 more 
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.net.FactoryURLClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:454) 
<dataConfig> 
    <dataSource 
    type="JdbcDataSource" 
    driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
    url="jdbc:sqlserver://localhost\ARBETSDATOR\SQLEXPRESS;integratedSecurity=true;databaseName=189021-resurs"/> 

    <document name="members"> 

    <entity name="member" query="SELECT * FROM Members"> 

     <field column="MemberId" name="id"/> 
     <field column="Name" name="name"/> 

    </entity> 
    </document> 

</dataConfig> 

難道說這是不可能的使用集成的安全性?

或者連接字符串有什麼問題嗎?

UPDATE:

我正在下載的Solr時自帶的例子碼頭。

我編輯了使用sql server的db示例。

我複製sqljdbc.jarsqljdbc4.jar\solr-4.6.0\example\example-DIH\solr\db\lib\solr-4.6.0\example\lib

主目錄設置爲\solr-4.6.0\example\example-DIH\solr

現在是一個新的錯誤:

16:29:54 ERROR DocBuilder Exception while processing: member document : SolrInputDocument(fields: []):org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT * FROM Members Processing Document # 1

16:29:54 ERROR DataImporter Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT * FROM Members Processing Document # 1

16:29:55 ERROR DocBuilder Exception while processing: member document : SolrInputDocument(fields: []):org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT * FROM Members Processing Document # 1

16:29:55 ERROR DataImporter Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT * FROM Members Processing Document # 1

我也得到了有關唯一密鑰警告:

16:29:49 WARN IndexSchema no uniqueKey specified in schema.

即使我已經設置iduniqueKey

<fields> 
<field name="id" type="string" indexed="true" stored="true" required="true" /> 
<field name="name" type="text" indexed="true" stored="true"/> 

<field name="text" type="text" indexed="true" stored="false" multiValued="true"/> 
</fields> 


<!-- Field to use to determine and enforce document uniqueness. 
    Unless this field is marked with required="false", it will be a required field 
    --> 
<uniqueKey>id</uniqueKey> 

<!-- field for the QueryParser to use when an explicit fieldname is absent --> 
<defaultSearchField>text</defaultSearchField> 


<copyField source="id" dest="text"/> 
<copyField source="name" dest="text"/> 

回答

1

沒有,因爲它清楚地在錯誤日誌中說,您的JDBC驅動程序jar文件缺少com.microsoft.sqlserver.jdbc.SQLServerDriver.That被設供應商,在這種情況下是microsfot sqlserver。您需要將它提供給運行solr實例的容器。如果你使用的是tomcat,將它複製到tomcat_home \ lib目錄下。你會在你的sql server安裝中找到jar文件,或者詢問你的sql服務器管理員。

+0

已更新的問題 – MikeAlike234

+0

對於問題的新增和添加部分,在例外字段中:[]看起來不正確。做這些事情的最好方法是通過調試部分/單位。首先確保你的連接字符串是正確的。直接在SQL客戶端上運行您的SELECT * FROM Members查詢,並確保結果中包含MemberId和Name。我可以從異常中看到,您正在嘗試創建一個空的Solr文檔。 – Arun

+0

SELECT * FROM成員正在工作。 Connection是否使用集成安全性可能會成爲問題? – MikeAlike234