5

为我第一次尝试使用 SOLR DIH 索引数据库数据设置一个简单的测试数据库。不幸的是,我每次都从完全导入中得到以下结果:

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">15</int>
</lst>
<lst name="initArgs">
<lst name="defaults">
<str name="config">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:2.187</str>
<str name="Total Requests made to DataSource">1</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">2011-03-06 21:30:07</str>
<str name="">Indexing failed. Rolled back all changes.</str>
<str name="Rolledback">2011-03-06 21:30:07</str>
</lst>
<str name="WARNING">
This response format is experimental.  It is likely to change in the future.
</str>
</response>

我的 solrconfig.xml 定义了以下 requestHandler:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
  <str name="config">data-config.xml</str>
</lst>
</requestHandler>

我的 data-config.xml 包含以下内容:

<dataConfig>
<dataSource type="JdbcDataSource" 
          driver="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:8889/Dev1" 
          user="root" 
          password="***"/>
<document>
<entity name="business_profile" 
        query="select business_id,business_name,address1,address2,city,state,zip from business_profile">
</entity>
</document>
</dataConfig>

schema.xml 字段定义:

<field name="business_id" type="int" indexed="true" stored="true"/>
<field name="business_name" type="string" indexed="true" stored="true"/>
<field name="address1" type="string" indexed="true" stored="true"/>
<field name="address2" type="string" indexed="true" stored="true"/>
<field name="city" type="string" indexed="true" stored="true"/>
<field name="state" type="string" indexed="true" stored="true"/>
<field name="zip" type="string" indexed="true" stored="true"/>

如果对数据源的总请求数显示为“1”,这是否意味着 JDBC 驱动程序配置正确,此时可能是 MySQL 权限问题,还是不一定?

我玩过 DIH 开发控制台试图找回一些东西,但它总是 1 个请求和 0 行,这让我认为它是 JDBC 或 mySQL 权限。我已经排除了数据库名称、端口号和用户/密码,但也许 JDBC 驱动程序设置不正确..?

谢谢


这是我从 solr 日志中得到的信息

0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:50:41 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 853 
0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:50:47 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 851 
0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:51:03 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 853 
0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:51:13 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 852 
0:0:0:0:0:0:0:1%0 -  -  [07/03/2011:17:51:14 +0000] "GET /solr/dataimport?command=full-import&mode=debug HTTP/1.1" 200 852 
4

7 回答 7

2

查看 SOLR 日志,每当索引失败时,它都会打印堆栈跟踪。

于 2011-03-07T07:32:46.760 回答
0

请直接在 MySQL 中从 data-config.xml 运行查询并检查是否返回任何行。

另外,请检查您的服务器的错误日志(如果您使用的是 Tomcat,则为 catalina.out),并在此处发布任何错误消息。

于 2011-03-07T06:32:43.277 回答
0

这是一个长镜头,但根据您的 Solr 日志,您的服务器似乎启用了 ipv6。

某些应用程序默认不支持 ipv6,您可能需要检查您的 MySQL 配置以确保它允许在环回接口上通过 ipv6 进行连接。

请参阅此 MySQL 5.5 版指南,例如:http ://dev.mysql.com/doc/refman/5.5/en/ipv6-local-connections.html

特别是上述指南中的步骤 3 和 4 可用于测试连接性,例如

shell> mysql -h localhost -u root -pYourRootPassword

mysql> STATUS
于 2013-06-04T05:51:27.660 回答
0

当然,您在 schema.xml 中添加了字段 business_id、business_name、address1、address2、city、state、zip?

您是否能够在服务器日志中找到任何错误?

如果您只有一个数据源,我不确定是否需要命名数据源,但这是告诉实体使用哪个数据源的方法:

<dataConfig>

    <dataSource 
        name="dev" 
        driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
        encoding="UTF-8"
        url="jdbc:sqlserver://____:1433;databaseName=____"
        user="____" 
        password="____" 
        readOnly="true" 
        autoCommit="false" />


    <document>
        <entity 
            name="metadataObject" 
            dataSource="dev" 
            pk="ITEM_MOID" 
            transformer="RegexTransformer,DateFormatTransformer"        
            query="___"

            ...

    </document>
</dataConfig>
于 2011-03-07T15:16:12.380 回答
0

您在此处发布的 data-config.xml,位于 url 部分 url="jdbc:mysql://localhost:8889/Dev1" 中。请将其更改为 url="jdbc:mysql://localhost/Dev1" 并将 jdbc 驱动程序放在 lib 目录中。请检查是否在lib目录中的jdbc驱动程序...

于 2011-11-18T09:11:30.760 回答
0

我有一个类似的问题。如果您的 schema.xml(或托管模式)包含 id 或唯一 id,如下所示: <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

然后您需要在 data-config.xml 中选择此文件作为主键或使用 required="true" 设置新键,或删除此部分。

于 2017-10-13T21:25:38.687 回答
-1

您是使用 ssh 还是隧道连接到远程数据库?在我看来,您正在连接到远程数据库。尝试连接到本地 mysql 服务器,如果它工作正常,那么你在使用 SSH 连接时遇到问题。

于 2011-06-06T10:56:36.373 回答