不要连接到 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 中的多个数据库

无法以新用户身份连接到 HyperSQL / HSQLDB 数据库

连接到 IDE 中现有的 hsqldb 实例

如何连接到独立的 HSQLDB

连接到 Play 应用程序中嵌入的 HSQLDB 数据库

HSQLDB 无法使用 android 连接到 db 脚本?