java - Exception in thread "main" com.datastax.driver.core.exceptions.InvalidQueryException: Unknown definition referenced in PRIMARY KEY -


i trying create tables in cassandra using java api.

this query works , creates table.

string query = "create table if not exists topquery1(term text , "             +"year text , "             +"month text , "             +"day text , "             +"hour text , "             +"count counter,"             +"primary key (\"term\", \"year\", \"month\", \"day\", \"hour\" ));"; 

but when execute following query throws error.

string query = "create table if not exists topquery2(term text , "             +"year text , "             +"month text , "             +"day text , "             +"hour text , "             +"dayofyear int , "             +"weekofyear int , "             +"productcount int , "             +"count counter,"             +"primary key (\"term\", \"year\", \"month\", \"day\", \"hour\", \"dayofyear\", \"weekofyear\", \"productcount\"));";       

this error :

exception in thread "main" com.datastax.driver.core.exceptions.invalidqueryexception: unknown definition dayofyear referenced in primary key @ com.datastax.driver.core.exceptions.invalidqueryexception.copy(invalidqueryexception.java:35) @ com.datastax.driver.core.defaultresultsetfuture.extractcausefromexecutionexception(defaultresultsetfuture.java:289) @ com.datastax.driver.core.defaultresultsetfuture.getuninterruptibly(defaultresultsetfuture.java:205) @ com.datastax.driver.core.abstractsession.execute(abstractsession.java:52) @ com.datastax.driver.core.abstractsession.execute(abstractsession.java:36) @ createtable.main(createtable.java:81) caused by: com.datastax.driver.core.exceptions.invalidqueryexception: unknown definition dayofyear referenced in primary key @ com.datastax.driver.core.responses$error.asexception(responses.java:103) @ com.datastax.driver.core.defaultresultsetfuture.onset(defaultresultsetfuture.java:140) @ com.datastax.driver.core.requesthandler.setfinalresult(requesthandler.java:293) @ com.datastax.driver.core.requesthandler.onset(requesthandler.java:455) @ com.datastax.driver.core.connection$dispatcher.messagereceived(connection.java:734) @ org.jboss.netty.channel.simplechannelupstreamhandler.handleupstream(simplechannelupstreamhandler.java:70) @ org.jboss.netty.handler.timeout.idlestateawarechannelupstreamhandler.handleupstream(idlestateawarechannelupstreamhandler.java:36) @ org.jboss.netty.channel.defaultchannelpipeline.sendupstream(defaultchannelpipeline.java:564) @ org.jboss.netty.channel.defaultchannelpipeline$defaultchannelhandlercontext.sendupstream(defaultchannelpipeline.java:791) @ org.jboss.netty.handler.timeout.idlestatehandler.messagereceived(idlestatehandler.java:294) @ org.jboss.netty.channel.simplechannelupstreamhandler.handleupstream(simplechannelupstreamhandler.java:70) @ org.jboss.netty.channel.defaultchannelpipeline.sendupstream(defaultchannelpipeline.java:564) @ org.jboss.netty.channel.defaultchannelpipeline$defaultchannelhandlercontext.sendupstream(defaultchannelpipeline.java:791) @ org.jboss.netty.channel.channels.firemessagereceived(channels.java:296) @ org.jboss.netty.handler.codec.oneone.onetoonedecoder.handleupstream(onetoonedecoder.java:70) @ org.jboss.netty.channel.defaultchannelpipeline.sendupstream(defaultchannelpipeline.java:564) @ org.jboss.netty.channel.defaultchannelpipeline$defaultchannelhandlercontext.sendupstream(defaultchannelpipeline.java:791) @ org.jboss.netty.channel.channels.firemessagereceived(channels.java:296) @ org.jboss.netty.handler.codec.frame.framedecoder.unfoldandfiremessagereceived(framedecoder.java:462) @ org.jboss.netty.handler.codec.frame.framedecoder.calldecode(framedecoder.java:443) @ org.jboss.netty.handler.codec.frame.framedecoder.messagereceived(framedecoder.java:303) @ org.jboss.netty.channel.simplechannelupstreamhandler.handleupstream(simplechannelupstreamhandler.java:70) @ org.jboss.netty.channel.defaultchannelpipeline.sendupstream(defaultchannelpipeline.java:564) @ org.jboss.netty.channel.defaultchannelpipeline.sendupstream(defaultchannelpipeline.java:559) @ org.jboss.netty.channel.channels.firemessagereceived(channels.java:268) @ org.jboss.netty.channel.channels.firemessagereceived(channels.java:255) @ org.jboss.netty.channel.socket.nio.nioworker.read(nioworker.java:88) @ org.jboss.netty.channel.socket.nio.abstractnioworker.process(abstractnioworker.java:108) @ org.jboss.netty.channel.socket.nio.abstractnioselector.run(abstractnioselector.java:318) @ org.jboss.netty.channel.socket.nio.abstractnioworker.run(abstractnioworker.java:89) @ org.jboss.netty.channel.socket.nio.nioworker.run(nioworker.java:178) @ org.jboss.netty.util.threadrenamingrunnable.run(threadrenamingrunnable.java:108) @ org.jboss.netty.util.internal.deadlockproofworker$1.run(deadlockproofworker.java:42) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ java.lang.thread.run(thread.java:745) 

i don't understand missing.

column names case-insensitive default, unless enclose them in double quotes.

when define column don't use quotes, it's called dayofyear:

+"dayofyear int , " 

but in primary key definition use quotes, it's looking column called dayofyear:

+"primary key (... \"dayofyear\" ...)"; 

either use quotes everywhere or (depending on whether case sensitivity matters).


Comments

Popular posts from this blog

c# - Where does the .ToList() go in LINQ query result -

android - CollapsingToolbarLayout: position the ExpandedText programmatically -

Listeners to visualise results of load test in JMeter -