gpt4 book ai didi

jdbc - 使用 cassandra-jdbc-1.2.1 jar 创建表时出错

转载 作者:行者123 更新时间:2023-12-04 05:07:19 27 4
gpt4 key购买 nike

我在通过 cassandra-jdbc 驱动程序在 cassandra 中创建列族(表)时遇到了一些困难。

cql 命令在 cqlsh 中正常工作,但在使用 cassandra jdbc 时不能正常工作。我怀疑这与我定义连接字符串的方式有关。任何帮助都会非常有帮助。

让我试着解释一下我做了什么。

我使用 cqlsh 和以下命令创建了一个键空间

CREATE KEYSPACE authdb WITH 
REPLICATION = {
'class' : 'SimpleStrategy',
'replication_factor' : 1
};

这是根据文档在: http://www.datastax.com/docs/1.2/cql_cli/cql/CREATE_KEYSPACE#cql-create-keyspace

我可以在 cqlsh 中使用创建表(列族)
 CREATE TABLE authdb.users(
user_name varchar PRIMARY KEY,
password varchar,
gender varchar,
session_token varchar,
birth_year bigint
);

这工作正常。

当我尝试使用 cassandra-jdbc-1.2.1.jar 创建表时,我的问题就开始了

我使用的代码是:
public static void createColumnFamily()  {
try {
Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
Connection con = DriverManager.getConnection("jdbc:cassandra://localhost:9160/authdb?version=3.0.0");

String qry = "CREATE TABLE authdb.users(" +
"user_name varchar PRIMARY KEY," +
"password varchar," +
"gender varchar," +
"session_token varchar," +
"birth_year bigint" +
")";

Statement smt = con.createStatement();
smt.executeUpdate(qry);
con.close();
} catch (Exception e) {
e.printStackTrace();
}

使用 cassandra-jdbc-1.2.1.jar 时出现以下错误:
    main DEBUG jdbc.CassandraDriver - Final Properties to Connection: {cqlVersion=3.0.0, portNumber=9160, databaseName=authdb, serverName=localhost}
main DEBUG jdbc.CassandraConnection - Connected to localhost:9160 in Cluster 'authdb' using Keyspace 'Test Cluster' and CQL version '3.0.0'
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Cassandra$Client.execute_cql3_query(Ljava/nio/ByteBuffer;Lorg/apache/cassandra/thrift/Compression;Lorg/apache/cassandra/thrift/ConsistencyLevel;)Lorg/apache/cassandra/thrift/CqlResult;
at org.apache.cassandra.cql.jdbc.CassandraConnection.execute(CassandraConnection.java:447)

注意:集群和 key 空间不正确

使用 cassandra-jdbc-1.1.2.jar 时出现以下错误:
    main DEBUG jdbc.CassandraDriver - Final Properties to Connection: {cqlVersion=3.0.0, portNumber=9160, databaseName=authdb, serverName=localhost}
main INFO jdbc.CassandraConnection - Connected to localhost:9160 using Keyspace authdb and CQL version 3.0.0
java.sql.SQLSyntaxErrorException: Cannot execute/prepare CQL2 statement since the CQL has been set to CQL3(This might mean your client hasn't been upgraded correctly to use the new CQL3 methods introduced in Cassandra 1.2+).

注意:在这种情况下,集群和 key 空间似乎是正确的。

最佳答案

使用 1.2.1 jar 时的错误是因为你有一个旧版本的 cassandra-thrift jar。您需要使其与 cassandra-jdbc 版本保持同步。 cassandra-thrift jar 位于二进制下载的 lib 目录中。

关于jdbc - 使用 cassandra-jdbc-1.2.1 jar 创建表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15373462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com