Solr无法加载MySQL JDBC驱动程序

Li'*_*Li' 8 java mysql apache solr jdbc

我使用Solr 4.6.1Mac.我试图弄清楚如何使用数据导入来加载数据MySQL.但我最终无法加载JDBC Driver类.这是我做的:

mysql-connector-java-5.1.29-bin.jar~/Tools/Solr/example/lib/

1.配置~/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>
Run Code Online (Sandbox Code Playgroud)

2.配置~/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>
Run Code Online (Sandbox Code Playgroud)

<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />
<lib dir="../../../contrib/dataimporthandler/lib" regex=".*\.jar" />
Run Code Online (Sandbox Code Playgroud)

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"/>
Run Code Online (Sandbox Code Playgroud)

然后跑

java -jar start.jar
Run Code Online (Sandbox Code Playgroud)

当我去

http://localhost:8983/solr/#/collection1/dataimport//dataimport 
Run Code Online (Sandbox Code Playgroud)

表明

No information available (idle)
Run Code Online (Sandbox Code Playgroud)

当我单击执行按钮时,我收到以下错误消息:

31537 [Thread-15] ERROR org.apache.solr.handler.dataimport.DataImporter - 完全导入失败:java.lang.RuntimeException:java.lang.RuntimeException:org.apache.solr.handler.dataimport.DataImportHandlerException:无法加载驱动程序:com.mysql.jdbc.Driver在org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter)的org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270)处理文档#1 .java:411)org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:476)at 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 at org.apache.solr.handler.dataimport.DocBuilder.buildDocument( DocBuilder.java:410)位于org.apache.solr.handler.dataimport.DocBuilder.exe的org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:323)e(DocBuilder.java:231)... 3更多引起:org.apache.solr.handler.dataimport.DataImportHandlerException:无法加载驱动程序:com.mysql.jdbc.Driver org.apache.solr处理文档#1位于org.apache.solr.handler.dataimport.JdbcDataSource.init的org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:116)的.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:71) (jdbcDataSource.java:64)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)位于org.apache.solr.handler的org.apache.solr.handler.dataimport.EntityProcessorWrapper.init(EntityProcessorWrapper.java:74). dataimport.DocBuilder.buildDocument(DocBuilder.java:427)at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilde r.java:408)... 5更多引起:java.lang.ClassNotFoundException:无法在org中加载com.mysql.jdbc.Driver或org.apache.solr.handler.dataimport.com.mysql.jdbc.Driver .apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:916)at org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:114)... 12 more引起:org. apache.solr.common.SolrException:在org.apache.solrRoreourceLoader的org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:470)中加载类'com.mysql.jdbc.Driver'时出错. findClass(SolrResourceLoader.java:401)at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:906)... 13更多引起:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver at java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader .findClass(URLClassLo ader.java:354)at java.lang.ClassLoader.loadClass(ClassLoader.java:423)at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789)at java.lang.ClassLoader.loadClass(ClassLoader.java:356) )atg.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:454)java.lang.Class.forName(Class.java:264)的java.lang.Class.forName0(Native Method)...还有15个

怎么解决这个?

bud*_*y86 21

  1. 在solr安装目录中创建一个文件夹.(比如solr-4.6.1/lib)
  2. 将mysql-connector-java-5.1.29-bin.jar放在该文件夹中.
  3. 编辑solrconfig.xml并放入jar的路径

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

  4. 重启Solr.

另请检查您的网址.它有//

http://localhost:8983/solr/#/collection1/dataimport//dataimport 
Run Code Online (Sandbox Code Playgroud)

  • 重要提示:重新启动 Solr。重启 Solr。重启 Solr。许多指南没有告诉你,我花了几个小时像白痴一样编辑配置文件一无所获...... (2认同)