我在Mac
上使用Solr 4.6.1
。我試圖弄清楚如何使用數據導入從MySQL
加載數據。但是我最終無法加載JDBC Driver類。下面是我做的:Solr無法加載MySQL JDBC驅動程序
把mysql-connector-java-5.1.29-bin.jar
到~/Tools/Solr/example/lib/
1.Configure ~/Tools/Solr/example/solr/collection1/conf/data-config.xml
:
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"
user="root"
password="root"/>
<document>
<entity name="SolrTest"
query="select * from SolrTest">
<field column="ID" name="id"/>
<field column="Name" name="name"/>
<field column="Class" name="class"/>
<field column="Score" name="score"/>
</entity>
</document>
</dataConfig>
2.Configure ~/Tools/Solr/example/solr/collection1/conf/solrconfig.xml
:
添加以下下< config> < /config>
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
也
<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />
<lib dir="../../../contrib/dataimporthandler/lib" regex=".*\.jar" />
3.添加以下到~/Tools/Solr/example/solr/collection1/conf/schema.xml
:
<field name="id" type="int" indexed="true" stored="true" required="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
<field name="class" type="string" indexed="true" stored="true" />
<field name="score" type="int" indexed="true" stored="true"/>
然後運行
java -jar start.jar
當我去
http://localhost:8983/solr/#/collection1/dataimport//dataimport
它顯示
No information available (idle)
當我點擊執行按鈕,我得到了以下錯誤消息:
31537 [線程15]錯誤org.apache.solr.handler.dataimport.DataImporter - 完全導入 失敗: java.lang.RuntimeException:java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException:可能 不加載驅動程序:com.mysql.jdbc.Driver處理文檔#1 org.apache.solr。 handler.dataimport.DocBuilder.execute(DocBuilder.java:270) at org.apache.so lr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:411) 在 org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:476) 在 org.apache.solr.handler。 dataimport.DataImporter $ 1.run(DataImporter.java:457) 引起:java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException:可能 不加載驅動程序:com.mysql.jdbc.Driver處理文件#1在 org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:410) 在 org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:323) 在 org.apache.solr.handler.dataimport.DocBui lder.execute(DocBuilder.java:231) ... 3更多原因: org.apache.solr.handler.dataimport.DataImportHandlerException:可能 無法加載驅動程序:com.mysql.jdbc.Driver處理文檔#1 at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:71) 在 org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource。的java:116) 在 org.apache.solr.handler.dataimport.JdbcDataSource.init(JdbcDataSource.java:64) 在 org.apache.solr.handler.dataimport.DataImporter.getDataSourceInstance(DataImporter.java:383) 在 org.apache.solr.handler.dataimport.ContextImpl.getDataSource(ContextImpl.java:99) 在 org.apache.solr.handler.dataimport.SqlEntityProcessor.init(SqlEntityProcessor.java:53) 在 有機.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更多原因:java.lang.ClassNotFoundException:無法 load com.mysql.jdbc.Driver或 org .apache.solr.handler.dataimport.com.mysql.jdbc.Driver at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:916) at org.apache.solr.handler.dataimport .JdbcDataSource.createConnectionFactory(JdbcDataSource.java:114) ... 12更多原因:org.apache.solr.common.SolrException:錯誤 加載類'com.mysql.jdbc.Driver'在 org.apache.solr .core.SolrResourceLoader.findClass(SolrResourceLoader.java:470) at org.apache.solr.core.SolrResourceL oader.findClass(SolrResourceLoader.java:401) at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:906) ... 13 more引起來自:java.lang.ClassNotFoundException: com .mysql.jdbc.Driver在 java.net.URLClassLoader的$ 1.run(URLClassLoader.java:366)在 java.net.URLClassLoader的$ 1.run(URLClassLoader.java:355)在 java.security.AccessController.doPrivileged(本地方法) java.net.URLClassLoader.findClass(URLClassLoader.java:354) java.lang.ClassLoader.loadClass(ClassLoader.java:423)at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789 ) java.lang.ClassLoader.loadClass(ClassLoader.java:356)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:454) 。 .. 15更多
如何解決這個問題?
直接在solr文件夾下創建一個lib文件夾,並放置jar文件,如〜/ Tools/Solr/lib/mysqlxxx。罐子 – Siva