当前位置: 首页 > 知识库问答 >
问题:

Solr无法加载MySQL JDBC驱动程序

万俟飞语
2023-03-14

我正在Mac上使用Solr 4.6.1。我试图弄明白如何使用数据导入从MySQL加载数据。但我最终无法加载JDBC驱动程序类。以下是我所做的:

mysql-connector-java-5.1.29-bin.jar放到~/Tools/Solr/form/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>

2.配置~/Tools/Solr/example/Solr/collection1/conf/solrconfig。xml

<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/form/solr/集合1/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[Thread-15]错误组织。阿帕奇。索尔。汉德勒。数据导入。DataImporter–完全导入失败:java。RuntimeException:java。lang.RuntimeException:org。阿帕奇。索尔。汉德勒。数据导入。DataImportHandlerException:无法加载驱动程序:com.mysql。jdbc。驱动程序处理文档#1在组织中。阿帕奇。索尔。汉德勒。数据导入。DocBuilder。在org上执行(DocBuilder.java:270)。阿帕奇。索尔。汉德勒。数据导入。数据导入器。doFullImport(DataImporter.java:411)位于org。阿帕奇。索尔。汉德勒。数据导入。数据导入器。org上的runCmd(DataImporter.java:476)。阿帕奇。索尔。汉德勒。数据导入。1美元。运行(DataImporter.java:457)的原因是:java。lang.RuntimeException:org。阿帕奇。索尔。汉德勒。数据导入。DataImportHandlerException:无法加载驱动程序:com.mysql。jdbc。驱动程序处理文档#1在组织中。阿帕奇。索尔。汉德勒。数据导入。DocBuilder。org上的buildDocument(DocBuilder.java:410)。阿帕奇。索尔。汉德勒。数据导入。DocBuilder。doFullDump(DocBuilder.java:323)位于org。阿帕奇。索尔。汉德勒。数据导入。DocBuilder。执行(DocBuilder.java:231)。。。另外3个原因是:org。阿帕奇。索尔。汉德勒。数据导入。DataImportHandlerException:无法加载驱动程序:com.mysql。jdbc。驱动程序处理文档#1在组织中。阿帕奇。索尔。汉德勒。数据导入。DataImportHandlerException。wrapAndThrow(dataImportHandlexception.java:71)位于org。阿帕奇。索尔。汉德勒。数据导入。JdbcDataSource。org上的createConnectionFactory(JdbcDataSource.java:116)。阿帕奇。索尔。汉德勒。数据导入。JdbcDataSource。org上的init(JdbcDataSource.java:64)。阿帕奇。索尔。汉德勒。数据导入。数据导入器。getDataSourceInstance(DataImporter.java:383)位于org。阿帕奇。索尔。汉德勒。数据导入。ContextImpl。getDataSource(ContextImpl.java:99)位于org。阿帕奇。索尔。汉德勒。数据导入。SqlEntityProcessor。org上的init(SqlEntityProcessor.java:53)。阿帕奇。索尔。汉德勒。数据导入。EntityProcessorWrapper。org上的init(EntityProcessorWrapper.java:74)。阿帕奇。索尔。汉德勒。数据导入。DocBuilder。org上的buildDocument(DocBuilder.java:427)。阿帕奇。索尔。汉德勒。数据导入。DocBuilder。buildDocument(DocBuilder.java:408)。。。另外5个原因是:java。lang.ClassNotFoundException:无法加载com.mysql。jdbc。驱动程序或组织。阿帕奇。索尔。汉德勒。数据导入。通用域名格式。mysql。jdbc。org的司机。阿帕奇。索尔。汉德勒。数据导入。DocBuilder。loadClass(DocBuilder.java:916)位于org。阿帕奇。索尔。汉德勒。数据导入。JdbcDataSource。createConnectionFactory(JdbcDataSource.java:114)。。。还有12个原因是:org。阿帕奇。索尔。常见的SolrException:加载类的com时出错。mysql。jdbc。司机在组织。阿帕奇。索尔。果心SolrResourceLoader。org上的findClass(SolrResourceLoader.java:470)。阿帕奇。索尔。果心SolrResourceLoader。findClass(SolrResourceLoader.java:401)位于org。阿帕奇。索尔。汉德勒。数据导入。DocBuilder。loadClass(DocBuilder.java:906)。。。还有13个原因:java。lang.ClassNotFoundException:com.mysql。jdbc。java的驱动程序。网1美元。在java上运行(URLClassLoader.java:366)。网1美元。在java上运行(URLClassLoader.java:355)。安全访问控制器。java上的doPrivileged(本机方法)。网URLClassLoader。java上的findClass(URLClassLoader.java:354)。lang.ClassLoader。java上的loadClass(ClassLoader.java:423)。网FactoryURLClassLoader。java上的loadClass(URLClassLoader.java:789)。lang.ClassLoader。java上的loadClass(ClassLoader.java:356)。朗,同学们。java上的forName0(本机方法)。朗,同学们。org上的forName(Class.java:264)。阿帕奇。索尔。果心SolrResourceLoader。findClass(SolrResourceLoader.java:454)。。。还有15个

这个怎么解决?


共有2个答案

易刚捷
2023-03-14

所以对于那些最终来到这里的不幸的灵魂。我使用的是最新的Solr Docker映像(8.4),它的配置使Solr Unix用户没有任何创建/删除文件夹等的权限。出于某种原因,我设法创建了一个lib文件,并将其视为目录。调试了一段时间后,我注意到了这个错误,并立即更改了

其中mypostgresql-42.2.10。jar驱动程序正在运行。否则,所有其他步骤都适用(编辑solrconfig.xml,添加data config.xml,添加schema.xml,将posgresql-*.jar复制到容器的/opt/solr-8.4.1/contrib/dataimporthandler)。也许值得一提的是,我使用了Docker的内部网络URL,而不是localhost:URL=“jdbc:postgresql://host.docker.internal:5600/my_postgres_db“但我认为这无关紧要。

哦,记住在添加文件后重新启动Solr/进行更改=)。

艾自强
2023-03-14

>

放置mysql-connector-java-5.1.29-bin。jar在文件夹中。

编辑solrconfig。xml,并放置jar的路径

重启Solr。

另外请检查您的网址。它有//

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

 类似资料:
  • 嘿,伙计们,还有一个问题,下面是信息

  • 问题内容: 我在春季配置了一个netezza db。我在类路径中添加了依赖的nzjdbc.jar 春季配置: 问题答案: 将放入您的本地Maven存储库 (在该目录执行这个位于 然后像正常依赖项一样使用它: @请参阅安装第三方JAR的指南

  • 我正在尝试将MySQL数据库连接到weblogic,以便我可以在我的项目中使用它,我对此很陌生,无论如何,我已经创建了一个数据源,我选择MySQL作为数据库类型 C:\Oracle\Middleware\wlserver\U 10.3\server\ext\jdbc\mysql 但它不起作用!

  • 这是hibernate.cfg.xml: 这是Hibernate实用程序文件:

  • 我正在处理Spring Boot项目,突然遇到应用程序无法加载MySQL jdbc的问题。(我编译了一次这个项目,没有改变任何东西) 这是我的pom.xml: 这是我的application.properties: Logcat: MySQL数据库最初是使用hibernate创建的。这些配置工作正常,但我不确定这里的真正问题是什么 编辑:我删除了。m2文件夹并从一开始安装所有依赖项。

  • 即使驱动程序类名已定义,我也会收到此错误 Java语言lang.IllegalStateException:无法加载驱动程序类:com。mysql。jdbc。组织的驱动程序。springframework。util。明确肯定state(Assert.java:392)~[spring-core-4.2.1.RELEASE.jar:4.2.1.RELEASE]位于org。springframewor