Cassandra / Eclipse - 无法建立连接

Posted

技术标签:

【中文标题】Cassandra / Eclipse - 无法建立连接【英文标题】:Cassandra / Eclipse - Can't make connection 【发布时间】:2013-02-20 11:24:03 【问题描述】:

所以我在我的项目中使用 Cassandra,我必须在 Eclipse 和数据库之间建立连接。我尝试使用我在 code.google.com 上找到的符合 JDBC 的驱动程序,但我得到了这个异常:

线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1

这是我的代码:

package cassandrasampledriver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.cassandra.cql.jdbc.DriverResolverException;
import org.apache.cassandra.cql.jdbc.InvalidUrlException;

 public class CassandraDriver 


 public static void main(String[] args)  
     Connection con = null;
     String KS = "cassandrademocql";

     try 
     
         Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
         con = DriverManager.getConnection("jdbc:cassandra://localhost:9160/" + KS);

        Statement stmt = con.createStatement();
        String query = "DROP KEYSPACE cassandrademocql;";
        ResultSet result = stmt.executeQuery(query);

     


     catch (ClassNotFoundException e) 
         e.printStackTrace();
     
     catch (SQLException e) 
         e.printStackTrace();
     
 

提前致谢:)

【问题讨论】:

您能告诉我们您使用的驱动程序版本吗? 首先感谢您的回复!我只想提一下,我只是使用 Cassandra 主演,所以我对此了解不多。我正在使用:DataStax 社区服务器 |版本 1.2.1 Eclipse |版本:Juno Service Release 1 JDK | 6u38 windows x64 JRE6 我希望这能回答你的问题。 【参考方案1】:

我使用this cql driver 运行您的代码(1.1.2 版与 cassandra 1.2 兼容。 在 JDK6 上没有错误。也许您的类路径中缺少引用?代码的唯一问题是您将变量分配给不会返回任何内容的方法调用ResultSet result = stmt.executeQuery(query);,因此将引发java.sql.SQLNonTransientException 异常。

您说您是 Cassandra 的新手,只是一些友好的建议,我会在做出选择之前对可用的 APIs for Cassandra 进行一些研究。

这些是我使用的 JAR

apache-cassandra-1.2.0-rc1-SNAPSHOT.jar apache-cassandra-clientutil-1.2.0-rc1-SNAPSHOT.jar apache-cassandra-thrift-1.2.0-rc1-SNAPSHOT.jar cassandra-jdbc-1.1.2.jar libthrift-0.9.0.jar log4j-1.2.16.jar log4j-over-slf4j-1.7.2.jar selenium-server-standalone-2.21.0.jar slf4j-api-1.7.2.jar slf4j-simple-1.7.2.jar

我运行的完整代码:

package cassandrasampledriver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class CassandraDriver 
    public static void main(String[] args)  
         Connection con = null;
         String KS = "cassandrademocql";

         try 
         
             Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
             con = DriverManager.getConnection("jdbc:cassandra://localhost:9160/" + KS);

            Statement stmt = con.createStatement();
            String query = "DROP KEYSPACE cassandrademocql;";

            // Because you are droping the KS this will not return anything
            // So the result set will be null and a java.sql.SQLNonTransientException exception will be thrown every time.
            ResultSet result = stmt.executeQuery(query);

         


         catch (Exception ex) 
             ex.printStackTrace();
         
     

【讨论】:

非常感谢您的帮助!我真的很感激:)

以上是关于Cassandra / Eclipse - 无法建立连接的主要内容,如果未能解决你的问题,请参考以下文章

解决Eclipse建Maven项目module无法转换为2.3

如何使用 R 在 cassandra 中创建键空间和表?

Spring Boot、MySQL、Tomcat 无法在 Eclipse 中创建池的初始连接

在 cassandra 的地图中添加新值/更新现有值是不是会创建墓碑?

在 SolR 中创建搜索索引时出错 - Cassandra 集成 (DSE)

eclipse中创建包时变成文件夹,且文件夹内的类无法被其他类引用