【Java】Cassandraからデータをとろうとすると「そんなKeyspaceねぇよ!」と言われる


そんなデータねぇよ!
Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Keyspace hoge does not exist

いやいやいやいや!HOGEあるから!

こんなことないですか?
Keyspaceを作成したにも関わらずJavaのコードに“select * from HOGE.USERS;”とか書いてもとってこれないことないですか?

僕はこいつにハマって随分苦しめられました・・・。


犯人はお前だ!
なんでもCassandraは大文字と小文字を区別してKeyspaceを命名しているにも関わらず、Java側でcqlをexecuteした時にselect文が全部小文字に変換されて実行されているようでした。

場当たり的な療法になりますが、急ぎの場合はKeyspaceを全部小文字で作成すると上手く行きます。

Session session = DBConnection.connect();
ResultSet rs = session.execute("select * from tsune.users");
for (Row row : rs) {
	System.out.println(row);
}

こんな感じで書いてあげたところサクっとデータをとって来てくれました!cqlから作成したKeyspaceで無くても、Keyspaceの名称が全て小文字ならばしっかりとデータをとってくることが出来ますッ!


まとめ
ただこれ何も根本解決にはなっていないので、大文字で作成されたKeyspaceもつって来れるように大文字Keyspaceを指定してcql投げた時に勝手に小文字にされないようにしないとな・・・と思います。


最後まで読んでいただきありがとうございます。もしこの記事を気に入って頂けたようであればシェアをお願い致します。非常に励みになります。


コメントを残す