Java Solr无法加载MySQL JDBC驱动程序
我正在Java Solr无法加载MySQL JDBC驱动程序,java,mysql,apache,jdbc,solr,Java,Mysql,Apache,Jdbc,Solr,我正在Mac上使用solr4.6.1。我试图弄清楚如何使用数据导入从MySQL加载数据。但我最终无法加载JDBC驱动程序类。以下是我所做的: 将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="JdbcDataSou
Mac
上使用solr4.6.1
。我试图弄清楚如何使用数据导入从MySQL
加载数据。但我最终无法加载JDBC驱动程序类。以下是我所做的:
将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>
<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]错误org.apache.solr.handler.dataimport.DataImporter–完全导入
失败:java.lang.RuntimeException:java.lang.RuntimeException:
org.apache.solr.handler.dataimport.DataImportHandlerException:可能
未加载驱动程序:com.mysql.jdbc.driver Processing Document#1 at
org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270)
在
org.apache.solr.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 Processing Document#1 at
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.DocBuilder.execute(DocBuilder.java:231)
... 又有3宗由以下原因引致:
org.apache.solr.handler.dataimport.DataImportHandlerException:可能
未加载驱动程序:com.mysql.jdbc.driver Processing Document#1 at
org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(dataimporthandlexception.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)
在
org.apache.solr.handler.dataimport.EntityProcessorWrapper.init(EntityProcessorWrapper.java:74)
在
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:427)
在
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:408)
... 5其他原因:java.lang.ClassNotFoundException:无法
加载com.mysql.jdbc.Driver或
org.apache.solr.handler.dataimport.com.mysql.jdbc.Driver位于
org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:916)
在
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)
在
org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:401)
在
org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:906)
... 13更多原因: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)位于
loadClass(ClassLoader.java:423)位于
java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789)位于
loadClass(ClassLoader.java:356)位于
java.lang.Class.forName0(本机方法)位于
java.lang.Class.forName(Class.java:264)位于
org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:454)
... 还有15个
如何解决这个问题
/
http://localhost:8983/solr/#/collection1/dataimport//dataimport
所以对于那些不幸的灵魂,他们最终来到这里。我使用的是最新的Solr Docker映像(8.4),它的配置使Solr Unix用户没有任何创建/删除文件夹等的权限。出于某种原因,我设法创建了一个
lib
文件,并将其视为目录。调试一段时间后,我注意到了这个错误,并立即更改了
到
其中,我的postgresql-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/进行更改=)。直接在Solr文件夹下创建一个lib文件夹,并将jar文件放在下面,如-~/Tools/Solr/lib/mysqlxxx.jar谢谢。它起作用了。但我还有一个问题。当我点击Dataimport页面下的Execute按钮时。它不断索引,永不停止。实际上,数据已经导入。我必须单击放弃,然后显示索引已完成。为什么我会有这个问题?很重要
No information available (idle)
http://localhost:8983/solr/#/collection1/dataimport//dataimport