원격 Cassandra 클러스터에 연결하는 간단한 Java 프로그램을 구현 중입니다. 이 포럼에 대한 질문과 답변을 기반으로 모든 지침을 따라 왔지만 여전히 오류가 발생했습니다. 다음은CQL3 Cassandra와의 연결
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DataReader {
public static void main(String[] args) throws Exception {
Connection con = null;
try {
Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
con = DriverManager.getConnection("jdbc:cassandra://62.31.3.185:9160/proto");
String query = "SELECT user_name, password, first_name, last_name, session_token
FROM users WHERE user_name=tigris";
Statement stmt = con.createStatement();
ResultSet result = stmt.executeQuery(query);
while (result.next()) {
System.out.println(result.getString("user_name"));
System.out.println(result.getString("password"));
System.out.println(result.getString("first_name"));
System.out.println(result.getString("last_name"));
System.out.println(result.getString("session_token"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
con = null;
}
}
}
}
스택 추적한다 :
java.sql.SQLSyntaxErrorException : 라인 0 : 다음은 자바 코드가없는 입력에서 -1 대안 '' '_ 이름, 비밀번호, FIRST_NAME을 선택, last_name, session_token 사용자 user_name = tigris ' 에서 org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute (CassandraStatement.java:181) 에서 org.apache.cassandra.cql.jdbc.CassandraStatement.executeQuery (CassandraStatement.java:181) java : 229) at CqlConnection.main (CqlConnection.java:19) 발생 원인 : InvalidRequestException (이유 : line 0 : -1 입력시 실용적인 대안 없음 ') org.apache.cassandra.thrift.Cassandra $ execute_cql3_query_result.read (Cassandra.java:37849) at org.apache.thrift.TServiceClient.receiveBase (TServiceClient.java : 78) org.apache.cassandra.thrift.Cassandra $ Client.recv_execute_cql3_query (Cassandra.java:1562) org.apache.cassandra.thrift.Cassandra $ Client.execute_cql3_query (Cassandra.java:1547) 조직에서의 에서 . apache.cassandra.cql.jdbc.CassandraConnection.execute (CassandraConnection.java:468) at org.apache.cassandra.cql.jdbc.CassandraConnection.execute (CassandraConnection.java:494) at org.apache.cassandra.cql. jdbc.CassandraStatement.doExecute (CassandraStatement.java:164) ... 2 더 많은
나는이 내 클래스 경로에 다음과 같은 라이브러리 :
카산드라 - clientutil-1.2.6 카산드라 - clientutil-2.0.7 카산드라 - JDBC-1.2.5 카산드라 - 중고품-1.2.6 guava- 17.0 libthrift-0.9.0
도움이 될 것입니다.
(예 : [DataStax 자바 드라이버 (http://github.com/datastax/java-driver)보다는이 JDBC 라이브러리가 오랜 시간 업데이트되지 않았습니다. –