[ 
https://issues.apache.org/jira/browse/SOLR-2907?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14151734#comment-14151734
 ] 

Aleksandr Ivanov edited comment on SOLR-2907 at 9/29/14 2:36 PM:
-----------------------------------------------------------------

Hi to everyone. I've had this problem. But I've solved it by adding  name of 
field (ITEM_ID and CATEGORY_ID) in schema.xml file on server to (just after 
</fields>): 
<uniqueKey>ITEM_ID</uniqueKey>
<uniqueKey>CATEGORY_ID</uniqueKey>
But I think the main problem is using wrong value for pk= in data-config.xml 
file.
You should use TemplateTransformer, in root entity. Something like this:
<entity name="account" datasource="MyDS" pk="id" 
transformer="TemplateTransformer" rootEntity="true" ...>
...
<field column="ITEM_ID" name="item_id" />
<field column="CATEGORY_ID" name="cid"
<field column="id" name="id" template="${account.item_id}_${account.cid}" // 
and it should be "123_232e23"
...
</entity>




was (Author: aleksandr.ivanov):
Hi to everyone. I've had this problem. But I've solved it by adding  name of 
field (ITEM_ID and CATEGORY_ID) in schema.xml file on server to (just after 
</fields>): 
<uniqueKey>ITEM_ID</uniqueKey>
<uniqueKey>CATEGORY_ID</uniqueKey>
But I think the main problem is using wrong value for pk= in data-config.xml 
file.
You should use TemplateTransformer, in root entity. Something like this:
<entity name="account" datasource="MyDS" pk="id" 
transformer="TemplateTransformer" rootEntity="true" ...>
...
<field column="ITEM_ID" name="item_id" />
<field column="CATEGORY_ID" name="cid"
<field column="id" name="id" template="${account.item_id}_${account.cid}" // 
and it should be "123_232e23"
...
</entity>



> java.lang.IllegalArgumentException: deltaQuery has no column to resolve to 
> declared primary key pk='ITEM_ID, CATEGORY_ID'
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-2907
>                 URL: https://issues.apache.org/jira/browse/SOLR-2907
>             Project: Solr
>          Issue Type: Bug
>          Components: contrib - DataImportHandler, Schema and Analysis
>    Affects Versions: 3.4
>            Reporter: Alan Baker
>
> We are using solr for our site and ran into this error in our own schema and 
> I was able to reproduce it using the dataimport example code in the solr 
> project.  We do not get this error in SOLR 1.4 only started seeing it as we 
> are working to upgrade to 3.4.0.  It fails when delta-importing linked tables.
> Complete trace:
> Nov 18, 2011 5:21:02 PM org.apache.solr.handler.dataimport.DataImporter 
> doDeltaImport
> SEVERE: Delta Import Failed
> java.lang.IllegalArgumentException: deltaQuery has no column to resolve to 
> declared primary key pk='ITEM_ID, CATEGORY_ID'
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.findMatchingPkColumn(DocBuilder.java:849)
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.collectDelta(DocBuilder.java:900)
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.collectDelta(DocBuilder.java:879)
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.doDelta(DocBuilder.java:285)
>       at 
> org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:179)
>       at 
> org.apache.solr.handler.dataimport.DataImporter.doDeltaImport(DataImporter.java:390)
>       at 
> org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:429)
>       at 
> org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:408)
> I used this dataConfig from the wiki on the data import:
> <dataConfig>
>     <dataSource driver="org.hsqldb.jdbcDriver" 
> url="jdbc:hsqldb:./example-DIH/hsqldb/ex" user="sa" />
>     <document>
>    <entity  name="item" pk="ID" 
>                       query="select * from item" 
>             deltaImportQuery="select * from item where 
> ID=='${dataimporter.delta.id}'"
>             deltaQuery="select id from item where last_modified &gt; 
> '${dataimporter.last_index_time}'">
>             <entity name="item_category" pk="ITEM_ID, CATEGORY_ID"
>                     query="select CATEGORY_ID from item_category where 
> ITEM_ID='${item.ID}'"
>                     deltaQuery="select ITEM_ID, CATEGORY_ID from 
> item_category where last_modified > '${dataimporter.last_index_time}'"
>                     parentDeltaQuery="select ID from item where 
> ID=${item_category.ITEM_ID}">
>                 
>                       <entity name="category" pk="ID"
>                         query="select DESCRIPTION as cat from category where 
> ID = '${item_category.CATEGORY_ID}'"
>                         deltaQuery="select ID from category where 
> last_modified &gt; '${dataimporter.last_index_time}'"
>                         parentDeltaQuery="select ITEM_ID, CATEGORY_ID from 
> item_category where CATEGORY_ID=${category.ID}"/>
>               </entity>
>         </entity>
>         
>     </document>
> </dataConfig>
> To reproduce use the data config from above and set the dataimport.properties 
> last update times to before the last_modifed date in the example data.  I my 
> case I had to set the year to 1969.  Then run a delta-import and the 
> exception occurs.  Thanks.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to