Hi, One of the possibilities for this kind of issue to occur may be the case sensitivity of column names in Oracle. Can you apply a transformer and check the entity map which actually contains the keys and their values ? Also, please try specifying upper case field names for Oracle and try if that works. something like
<entity name="tipodocumento" query="SELECT *NOMBRE* FROM tipodocumento where *IDTIPODOCUMENTO* = '${documento.*TIPODOCUMENTO*}'"> <field column="*NOMBRE*" name="nombre" /> </entity> On Tue, Jun 5, 2012 at 9:57 AM, Rafael Taboada <kaliman.fore...@gmail.com>wrote: > Hi Gora, > > > > Your configuration files look fine. It would seem that something > > is going wrong with the SELECT in Oracle, or with the JDBC > > driver used to access Oracle. Could you try: > > * Manually doing the SELECT for the entity, and sub-entity > > to ensure that things are working. > > > > The SELECTs are working OK. > > > > > * Check the JDBC settings. > > > > I'm using tha last version of jdbc6.jar for Oracle 11g. It seems JDBC > setting is OK because solr brings data. > > > > > Sorry, I do not have access to Oracle so that I cannot try this > > out myself. > > > > Also, have you checked the Solr logs for any error messages? > > Finally, I just noticed that you have extra quotes in: > > ...where usuario_idusuario = '${usuario.idusuario}'" > > I doubt that is the cause of your problem, but you could try > > removing them. > > > > If I remove quotes, there is an error about this: > > SEVERE: Full Import failed:java.lang.RuntimeException: > java.lang.RuntimeException: > org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to > execute query: SELECT nombre FROM tipodocumento WHERE idtipodocumento = > 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: Unable to > execute query: SELECT nombre FROM tipodocumento WHERE idtipodocumento = > 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 > Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException: > Unable to execute query: SELECT nombre FROM tipodocumento WHERE > idtipodocumento = Processing Document # 1 > at > > org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:72) > at > > org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:253) > at > > org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:210) > at > > org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:39) > at > > org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59) > at > > org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73) > at > > org.apache.solr.handler.dataimport.EntityProcessorWrapper.pullRow(EntityProcessorWrapper.java:330) > at > > org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:296) > at > > org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:683) > at > > org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:709) > at > > org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:619) > ... 5 more > Caused by: java.sql.SQLSyntaxErrorException: ORA-00936: missing expression > > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445) > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) > at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879) > at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450) > at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) > at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531) > at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193) > at > oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:873) > at > > oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167) > at > > oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289) > at > > oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1909) > at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1871) > at > > oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:318) > at > > org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:246 > My config files using Oracle are: > > > db-data-config.xml > <dataConfig> > <dataSource driver="oracle.jdbc.OracleDriver" > url="jdbc:oracle:thin:@localhost:1521:solr" user="solr" password="solr" /> > <document> > <entity name="documento" query="SELECT > iddocumento,nrodocumento,asunto,autor,tipodocumento FROM documento"> > <field column="iddocumento" name="iddocumento" /> > <field column="nrodocumento" name="nrodocumento" /> > <field column="asunto" name="asuntodocumento" /> > <field column="autor" name="autor" /> > <field column="tipodocumento" name="tipodocumento" /> > <entity name="tipodocumento1" query="SELECT nombre FROM > tipodocumento WHERE idtipodocumento = '${documento.tipodocumento}'"> > <field column="nombre" name="nombre" /> > </entity> > </entity> > </document> > </dataConfig> > > schema.xml > <?xml version="1.0" encoding="UTF-8" ?> > <schema name="db" version="1.1"> > <types> > <fieldType name="string" class="solr.StrField" sortMissingLast="true" > omitNorms="true"/> > <fieldType name="sint" class="solr.SortableIntField" > sortMissingLast="true" omitNorms="true"/> > </types> > > <fields> > <field name="iddocumento" type="sint" indexed="true" stored="true" > required="true" /> > <field name="nrodocumento" type="string" indexed="true" stored="true" /> > <field name="asuntodocumento" type="string" indexed="true" > stored="true"/> > <field name="autor" type="string" indexed="true" stored="true"/> > <field name="tipodocumento" type="string" indexed="true" stored="true"/> > <field name="nombre" type="string" indexed="true" stored="true"/> > </fields> > > <!-- Field to use to determine and enforce document uniqueness. > Unless this field is marked with required="false", it will be a > required field > --> > <uniqueKey>iddocumento</uniqueKey> > > <!-- field for the QueryParser to use when an explicit fieldname is absent > --> > <defaultSearchField>nrodocumento</defaultSearchField> > > <!-- SolrQueryParser configuration: defaultOperator="AND|OR" --> > <solrQueryParser defaultOperator="OR"/> > > </schema> > > solrconfig.xml > <?xml version="1.0" encoding="UTF-8" ?> > <config> > <luceneMatchVersion>LUCENE_36</luceneMatchVersion> > <!-- The DirectoryFactory to use for indexes. > solr.StandardDirectoryFactory, the default, is filesystem based. > solr.RAMDirectoryFactory is memory based, not persistent, and > doesn't work with replication. --> > <directoryFactory name="DirectoryFactory" > class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/> > > > <updateHandler class="solr.DirectUpdateHandler2"> > <autoCommit> > <maxTime>30000</maxTime> > </autoCommit> > </updateHandler> > > <requestDispatcher handleSelect="true" > > <requestParsers enableRemoteStreaming="false" > multipartUploadLimitInKB="2048" /> > </requestDispatcher> > > <requestHandler name="standard" class="solr.StandardRequestHandler" > default="true" /> > <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" /> > <requestHandler name="/admin/" > class="org.apache.solr.handler.admin.AdminHandlers" /> > <requestHandler name="/dataimport" > class="org.apache.solr.handler.dataimport.DataImportHandler"> > <lst name="defaults"> > <str name="config">db-data-config.xml</str> > </lst> > </requestHandler> > <!-- config for the admin interface --> > <admin> > <defaultQuery>solr</defaultQuery> > </admin> > > </config> > > Thanks for your help. > > -- > Rafael Taboada > > /* > * Phone >> 992 741 026 > */ > -- Thanks and Regards Rahul A. Warawdekar