Solr DataImportHandler登录到SQL但从不提取任何数据

时间:2011-11-25 12:19:23

标签: sql-server-2008 configuration jdbc solr

您好我已将Solr配置从正常工作的Windows服务器复制到新服务器,但似乎无法运行导入。

他们都使用win server 2008和SQL 2008R2。这是数据导入配置:

<dataConfig>  
  <dataSource type="JdbcDataSource"  name="ds1"
        driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"  
        url="jdbc:sqlserver://localhost;databaseName=DB"   
        user="Solr"  
        password="pwd"/>  
  <document name="datas">  
    <entity name="data" dataSource="ds1" pk="key"
    query="EXEC SOLR_COMPANY_SEARCH_DATA"
    deltaImportQuery="SELECT * FROM Company_Search_Data WHERE [key]='${dataimporter.delta.key}'"
    deltaQuery="SELECT [key] FROM Company_Search_Data WHERE modify_dt > '${dataimporter.last_index_time}'">  
          <field column="WorkDesc_Comments" name="WorkDesc_Comments_Split" />
          <field column="WorkDesc_Comments" name="WorkDesc_Comments_Edge" />
    </entity>  
  </document>  
</dataConfig>  

我可以使用MS SQL Profiler成功观看Solr用户登录,但之后什么都没有。它似乎甚至没有尝试执行存储过程。任何想法为什么这将是一个服务器而不是另一个服务器?

FTR在tomcat catalina日志中唯一的东西是:

org.apache.solr.handler.dataimport.JdbcDataSource$1 call
INFO: Creating a connection for entity data with URL: jdbc:sqlserver://localhost;databaseName=CATLive

更新 来自Solr Mailing列表的Me和Yavar Husain都提出了用开源替换MS JDBC驱动程序的解决方案 - 这似乎有效,并且意味着这必须是最新版本的Java,DIH和之间的兼容性问题。 MS JDBC驱动程序。

更新2: 已经报告了Java 1.6.0_29 - 我正在运行的问题! http://blogs.msdn.com/b/jdbcteam/archive/2011/11/07/supported-java-versions-november-2011.aspx

5 个答案:

答案 0 :(得分:4)

这看起来是由Java 1.6.0_29的发布引起的 - 我正在运行它: http://blogs.msdn.com/b/jdbcteam/archive/2011/11/07/supported-java-versions-november-2011.aspx

答案 1 :(得分:3)

看到问题只能出现在JDBC驱动程序或配置中,我通过用jTDS Open Source JDBC driver替换它来解决这个问题。当我得到它时,我的配置就像这样:

<dataConfig>
  <dataSource type="JdbcDataSource" 
              driver="net.sourceforge.jtds.jdbc.Driver"
              url="jdbc:jtds:sqlserver://localhost;databaseName=DBName" 
              user="Solr" 
              password="password" name="ds1"/>
  <document>
    <entity dataSource="ds1" name="sometext" 
            query="SELECT * FROM mytable">
    </entity>
  </document>
</dataConfig>
HTH某人 - 但我不是这个标记作为答案,因为我不明白为什么我不能使用MS驱动程序...

答案 2 :(得分:0)

我猜你错过了这个

<强> URL = “JDBC:MySQL的://本地主机/ DBNAME”

dbname - &gt; \ SQL2008

答案 3 :(得分:0)

我认为当您将Solr配置复制到新服务器时,您也已经获取了索引文件。我怀疑问题是由于Solr已将索引数据编入索引。您的查询表明您只想索引自上一个索引以来发生更改的文件。

这有意义吗?

答案 4 :(得分:0)

问题似乎只发生在Java运行时的非常特定的版本上,并影响到仅仅是solr之外的应用程序。这让我相信根本原因是Java运行时和Microsoft SQL Server JDBC驱动程序之间的不兼容或错误,而不是Solr问题。

在我的特定情况下,我们有两组,每组包含3台服务器。一组没有表现出这个问题的症状,而另一组则表现出问题。所有服务器都运行Solr 3.4.0,以及相同版本的SQL Server JDBC驱动程序3.0。所有服务器也运行JRE 1.6.0_20,经过仔细检查后发现问题服务器正在使用稍微更新的1.6.0_20包(通过yum分发的不同RPM) CentOS的)。

通过将问题服务器降级到已知良好服务器上的java版本,问题立即消失。

具体来说,

工作:
http://pkgs.org/centos-5-rhel-5/centos-rhel-x86_64/java-1.6.0-openjdk-1.6.0.0-1.22.1.9.8.el5_6.x86_64.rpm.html

非工作:
http://pkgs.org/centos-5-rhel-5/centos-rhel-updates-x86_64/java-1.6.0-openjdk-src-1.6.0.0-1.23.1.9.10.el5_7.x86_64.rpm.html

相关问题