【发布时间】:2017-01-17 14:39:56
【问题描述】:
我在使用 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;
}
【问题讨论】:
-
您的网址似乎有误。我自己没有使用 Cassandra,但它看起来应该是
jdbc:cassandra:test/test@localhost:7199/tutorialspoint(注意没有//),另请参阅 stackoverflow.com/questions/7688571/…