问题
When I try to run domain.com:8080/solr/dataimport?command=full-import
, I get the error Indexing failed. Rolled back all changes.
There's no additional error message to inform me what when wrong? Any suggestions?
data-config.xml
<dataConfig>
<dataSource
name="mysql"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/databasename"
user="myusername"
password="mypassword" />
<document>
<entity
name="posts"
datasource="mysql"
query="select id, title, description from posts"
deltaQuery="select id, title, description from posts where updated_at > '${dataimporter.last_index_time}'">\
</entity>
<field column="id" name="id" indexed="true" stored="true" />
<field column="title" name="title" indexed="true" stored="true" />
<field column="description" name="description" indexed="true" stored="true" />
</document>
</dataConfig>
Output
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
<lst name="initArgs">
<lst name="defaults">
<str name="config">/usr/local/solr/conf/data-config.xml</str>
</lst>
</lst>
<str name="command">full-import</str>
<str name="status">idle</str>
<str name="importResponse"/>
<lst name="statusMessages">
<str name="Time Elapsed">0:0:12.227</str>
<str name="Total Requests made to DataSource">0</str>
<str name="Total Rows Fetched">0</str>
<str name="Total Documents Processed">0</str>
<str name="Total Documents Skipped">0</str>
<str name="Full Dump Started">2012-08-16 14:50:07</str>
<str name="">Indexing failed. Rolled back all changes.</str>
<str name="Rolledback">2012-08-16 14:50:08</str>
</lst>
<str name="WARNING">
This response format is experimental. It is likely to change in the future.
</str>
</response>
Log
Aug 16, 2012 3:15:28 PM org.apache.solr.common.SolrException log
SEVERE: Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver: com.mysql.jdbc.Driver Processing Document # 1
at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:264)
at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:375)
at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:445)
at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:426)
Caused by: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver: com.mysql.jdbc.Driver Processing Document # 1
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:621)
at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:327)
at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:225)
... 3 more
回答1:
All info about what went wrong is in the log file (usually: catalina.out)
回答2:
It looks to me like you are missing the solr mysql driver.
回答3:
Or if you have the solr mysql connector, it can't find it. Make sure it's in the proper lib directory (solr/yourdb/lib
and/or example/lib
) or put it somewhere reachable and add:
{lib dir="path/to/lib/dir/containing/mysql-connecter/" regex="mysql-connector-java-\d.*\.jar" }
to your solrconfig.xml file.
I put it in the upper level solr-4.X/dist/ folder and put
{lib dir="../../../../dist/" regex="mysql-connector-java-\d.*\.jar"}
in solr config.xml
来源:https://stackoverflow.com/questions/11990015/indexing-failed-rolled-back-all-changes-solr-dataimport