You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Aleksandr Ivanov (JIRA)" <ji...@apache.org> on 2014/09/29 16:37:34 UTC

[jira] [Comment Edited] (SOLR-2907) java.lang.IllegalArgumentException: deltaQuery has no column to resolve to declared primary key pk='ITEM_ID, CATEGORY_ID'

    [ 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-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org