【问题标题】:HSQLDB server connection using username and password in server startup command in cmd is not working在cmd中的服务器启动命令中使用用户名和密码的HSQLDB服务器连接不起作用
【发布时间】:2021-02-15 23:53:48
【问题描述】:

我正在使用以下命令提示符启动 hsqldb 服务器,其中 db_name 作为 MDB,凭据作为 user=test 和 password=test:

    java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:/E:/DB/mdb --dbname.0 mdb user=test 
    password=test

它启动服务器时没有错误,但是当我在我的 java 代码中使用相同的凭据时

    con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/mware;file:E:/DB/mdb", "test", 
    "test");

它抛出异常为:

 {java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: test
    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)}

请帮忙

【问题讨论】:

    标签: database hsqldb credentials embedded-database server-mode


    【解决方案1】:

    启动服务器的正确方法是:

    java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:/E:/DB/mdb;user=test;password=test --dbname.0 mware 
    

    连接应该是这样的:

    con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/mware, "test", 
    "test");
    

    userpassword 之外的任何初始数据库设置都以相同的方式定义。例如--database.0 file:/E:/DB/mdb;user=test;password=test;hsqldb.tx=mvcc。这些属性应用于新数据库,以后可以使用 SQL 语句进行更改。见http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html#dpc_db_operations

    【讨论】:

    • 感谢@fredt,这是一个不错的选择。我还使用您的另一篇评论尝试了它,使用 java 代码作为 p.setProperty("server.database.2", "file:G:/db1/mware;user=test;password=test"); p.setProperty("server.dbname.2", "mware"); server.start();然后 Class.forName("org.hsqldb.jdbc.JDBCDriver");并提到了连接网址
    • 您能否告诉我:有没有办法在 In-Process:file 模式数据库中提及“启用多线程”,或者在任何加密的 in-proc:file 类型数据库中默认启用它。以下是我的数据库网址:getConnection("jdbc:hsqldb:file:C:\\inprocess\\mware;crypt_key=xxxxxxxxxxxxxxx;crypt_type=AES;crypt_lobs=false"
    • 我找到了这个属性 hsqldb.tx=MVCC 但它会帮助我在我的多线程应用程序中对相同/以及差异表执行差异操作吗?
    • MVCC 模式在同时有大量写入和读取时很有用。如果您主要从表格中阅读,默认的locks 模式应该没问题,阅读指南。
    • (在时间段 1)我的服务正在接收来自多个客户端的数据,并且我也在进程中写入 hsqldb。而在另一时间(时隙 2),我正在从进程内数据库读取数据并同时从另一组客户端获取要写入的数据。那么我应该使用 mvcc 还是 locks?
    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    相关资源
    最近更新 更多