2012-05-31 3 views
0

인덱싱을 위해 많은 테이블을 사용합니다. 이 테이블은 데이터 입력 중 크롤러가 삽입, 업데이트하는데도 사용됩니다.Solr, dataimport 중에 쿼리를 실행할 수 없습니다.

dataimport 중에 "쿼리를 실행할 수 없습니다"와 같은 일부 테이블에 대해 오류가 발생합니다. 그러나 다음에 테이블에 대한 데이터 가져 오기를 시도 할 때 오류없이 성공적으로 수행 할 수 있습니다.

[Thread-17] ERROR o.a.s.h.d.EntityProcessorWrapper - Exception in entity : 
test_5:org.apache.solr.handler.dataimport.DataImportHandlerException: 
Unable to execute query: 
SELECT Title, url, synonym, description FROM test_5 WHERE status in ('1','s') Processing Document # 11046 

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.nextRow(EntityProcessorWrapper.java:238) 
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:596) 
at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:268) 
at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:187) 
at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:359) 
at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:427) 
at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:408) 

Caused by: java.sql.SQLException: ResultSet is from UPDATE. No Data. 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) 
at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7152) 
at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3870) 
at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3407) 
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2384) 
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153) 
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792) 
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
at sun.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381) 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) 
at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:161) 
at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:128) 
at org.apache.solr.handler.dataimport.JdbcDataSource.getConnection(JdbcDataSource.java:363) 
at org.apache.solr.handler.dataimport.JdbcDataSource.access$200(JdbcDataSource.java:39) 
at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:240) 
... 11 more 

data-config.xml에서 connettimeout, readtimeout을 설정했지만 종종이 오류가 발생합니다. 다른 프로세스 (삽입, 업데이트, 삭제)에서 사용하는 데이터 가져 오기 용 테이블을 사용하는 경우이 오류가 발생합니까? 어떻게 모든 테이블을 인덱스 할 수 있습니까?

답변

0

data-config.xml 파일에서 "readOnly = True"로 설정해보십시오.

<dataSource 
    type="JdbcDataSource" 
    driver="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://my.ip/my_db" 
    user="my_db_user" 
    password="my_password" 
    readOnly="True" 
    /> 
+0

로봇을 모두 정지해도 (삽입/업데이트) 동일한 오류가 발생합니다. 어떻게해야합니까? 도와주세요 ~ – user1396224