不要连接到 HSQLDB 数据库
Posted
技术标签:
【中文标题】不要连接到 HSQLDB 数据库【英文标题】:Don't get connection to HSQLDB database 【发布时间】:2019-12-12 14:57:53 【问题描述】:我已经存在数据库。当我测试我的连接时,我得到了这个异常
java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification: SA
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at libraryapp.AppConnect.getConnection(AppConnect.java:17)
at libraryapp.TestAppConnection.main(TestAppConnection.java:7)
Caused by: org.hsqldb.HsqlException: invalid authorization specification: SA
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.rights.User.checkPassword(Unknown Source)
at org.hsqldb.rights.UserManager.getUser(Unknown Source)
at org.hsqldb.Database.connect(Unknown Source)
at org.hsqldb.DatabaseManager.newSession(Unknown Source)
我的连接类
public class AppConnect
private static final String url ="jdbc:hsqldb:file:src/main/resources/db/library";
private static final String driver ="org.hsqldb.jdbcDriver";
private static final String user = "SA";
private static final String password = " ";
public Connection getConnection()
Connection connection = null;
try
Class.forName(driver);
connection = DriverManager.getConnection(url, user, password);
connection.setAutoCommit(true);
System.out.println("Good connection");
catch (ClassNotFoundException | SQLException e)
e.printStackTrace();
System.out.println("Failed to establish the connection :(");
return connection;
在 pom.xml 我有这个
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.5.0</version>
</dependency>
如果我将路径更改为不存在的数据库,则会创建并连接
【问题讨论】:
【参考方案1】:此错误表示您的连接 URL 找到了数据库,但用户名和密码的组合不正确。
您使用的密码是空格,但数据库的默认密码是空字符串。尝试将其更改为:
private static final String password = "";
如果这不起作用,您需要找出创建数据库时最初用作用户名和密码的用户名和密码。
【讨论】:
是的,你是对的。谢谢你。问题出在空间上。但是如果String没有偶数空间,它就不是null,给变量赋值是什么? 零长度字符串分配给变量并用作密码。以上是关于不要连接到 HSQLDB 数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何设置连接 URL 以连接到 HSQLDB 中的多个数据库