I notice from the stack trace that the "execute_cql_query" function is being used, not "execute_cql3_query", so the query being run is being run like it was executed in cqlsh -2
, that is most likely the issue. The name of the primary key from cql2's view of things is probably "key".
Cassandra astyanax sql query errors out when where clause is used
Вопрос
select with where clause works fine in cassandra cqlsh> but not from Astyanax. However, SLQ clause without where clause works fine from astyanax. Not sure what I'm missing any thoughts?
CREATE TABLE personalization1 (
username text primary key,
incidentPage text,
timelinePage text,
);
insert into personalization1 (username,incidentpage,timelinepage) values ('3cd70b90-d211-11e3-8774-14109fdb7013','3cd70b90-d211-11e3-8774-14109fdb7013','3cd70b90-d211-11e3-8774-14109fdb7013');
SELECT * FROM personalization1 where username='3cd70b90-d211-11e3-8774-14109fdb7013' ;
com.netflix.astyanax.connectionpool.exceptions.BadRequestException: BadRequestException: [host=10.65.240.89(10.65.240.89):9160, latency=237(342), attempts=1]InvalidRequestException(why:No indexed columns present in by-columns clause with "equals" operator) at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:159) at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:28) at com.netflix.astyanax.thrift.ThriftSyncConnectionFactoryImpl$ThriftConnection.execute(ThriftSyncConnectionFactoryImpl.java:151) at com.netflix.astyanax.connectionpool.impl.AbstractExecuteWithFailoverImpl.tryOperation(AbstractExecuteWithFailoverImpl.java:119) at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:338) at com.netflix.astyanax.thrift.AbstractThriftCqlQuery.execute(AbstractThriftCqlQuery.java:41) at com.ebay.timeline.dao.PersonaliztionDAOTest.test(PersonaliztionDAOTest.java:83) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: InvalidRequestException(why:No indexed columns present in by-columns clause with "equals" operator) at org.apache.cassandra.thrift.Cassandra$execute_cql_query_result.read(Cassandra.java:36625) at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) at org.apache.cassandra.thrift.Cassandra$Client.recv_execute_cql_query(Cassandra.java:1525) at org.apache.cassandra.thrift.Cassandra$Client.execute_cql_query(Cassandra.java:1511) at com.netflix.astyanax.thrift.ThriftCqlQuery.execute_cql_query(ThriftCqlQuery.java:33) at com.netflix.astyanax.thrift.AbstractThriftCqlQuery$1.internalExecute(AbstractThriftCqlQuery.java:46) at com.netflix.astyanax.thrift.AbstractThriftCqlQuery$1.internalExecute(AbstractThriftCqlQuery.java:43) at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:60)
Решение