gpt4 book ai didi

Java 使用 JDBC 连接到 Cassandra [SQLNonTransientConnectionException : Keyspace names must be composed of alphanumerics and underscores]

转载 作者:行者123 更新时间:2023-12-01 09:30:55 31 4
gpt4 key购买 nike

我在使用 jdbc 连接到 Cassandra 数据库时遇到问题。

我收到一条错误消息SQLNonTransientConnectionException:键空间名称必须由字母数字和下划线组成

这是我的 jdbc 网址:jdbc:cassandra://test/test@localhost:7199/tutorialspoint

堆栈跟踪:

java.sql.SQLNonTransientConnectionException: Keyspace names must be composed of alphanumerics and underscores (parsed: 'test@localhost:7199/tutorialspoint')
at org.apache.cassandra.cql.jdbc.Utils.parseURL(Utils.java:183)
at org.apache.cassandra.cql.jdbc.CassandraDriver.connect(CassandraDriver.java:85)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)

感谢您的帮助!

编辑:这是我连接数据库的方法。

@Override
public boolean connect() {
StringBuilder sb_url = new StringBuilder("jdbc:cassandra://")
.append(this.username)
.append("/")
.append(this.password)
.append("@")
.append(this.url)
.append(":")
.append(this.port)
.append("/")
.append(this.database);



try {
log.debug("Trying to connect to: {}", sb_url.toString());
this.conn = DriverManager.getConnection(sb_url.toString());
} catch (SQLException ex) {
log.debug("Connection to database could not been established");
log.debug(ex.toString());
ex.printStackTrace();
return false;
}
log.debug("Connection to database has been established!");
return true;
}

最佳答案

我通过更改连接 URL 解决了问题。我替换了

 StringBuilder sb_url = new StringBuilder("jdbc:cassandra://")
.append(this.username)
.append("/")
.append(this.password)
.append("@")
.append(this.url)
.append(":")
.append(this.port)
.append("/")
.append(this.database);

与:

        StringBuilder sb_url = new StringBuilder("jdbc:cassandra://")
.append(this.url)
.append(":")
.append(this.port)
.append("/")
.append(this.database)
;

Properties props = new Properties();
props.setProperty("user", this.username);
props.setProperty("password", this.password);

显然正在解析 URL

jdbc:cassandra://test/test@localhost:7199/tutorialspoint

由于 URL 中的“@”而导致错误。

我通过检查 Github 上的 Cassandra JDBC 源代码找到了解决方案 https://github.com/slowenthal/cassandra-jdbc/tree/master/src/main/java/org/apache/cassandra/cql/jdbc

我希望这对其他人也有帮助。感谢您的帮助。

关于Java 使用 JDBC 连接到 Cassandra [SQLNonTransientConnectionException : Keyspace names must be composed of alphanumerics and underscores],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39411684/

31 4 0