2014-02-25 100 views
5

我在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更多

如何解决这个问题?

+0

直接在solr文件夹下创建一个lib文件夹,并放置jar文件,如〜/ Tools/Solr/lib/mysqlxxx。罐子 – Siva

回答

15
  1. 在您的solr安装目录中创建一个文件夹。 (比如solr-4.6.1/lib
  2. 将mysql-connector-java-5.1.29-bin.jar放置在文件夹内。
  3. 编辑solrconfig.xml中,把罐子的路径

    <lib dir="../../../lib/" regex="mysql-connector-java-5.1.29-bin.jar" />

  4. 重新启动Solr的。

另请检查您的URL。它有//

http://localhost:8983/solr/#/collection1/dataimport//dataimport 
+1

谢谢。有用。但我有另一个问题。当我点击Dataimport页面下的Execute按钮时。它不断索引,永不停止。其实数据已经被导入。我必须点击放弃,然后显示索引完成。为什么我有这个问题? –

+1

重要:重新启动Solr。重新启动Solr。重新启动Solr。许多指南不告诉你,我花了几个小时像一个白痴编辑配置文件什么也没有... – Francesco

+0

那个jar文件在哪里,我看不到它在我的系统? –

相关问题