如何确保在Windows上加载HSQLDB属性配置?

时间:2014-06-22 03:05:16

标签: java windows window hsqldb

我在Windows上遇到HSQLDB V2.3的问题。我无法使用 HSQLDB服务器连接新数据库。

  1. 是否有服务器的日志或调试选项,以便检查加载的属性和文件路径等?
  2. 我的属性文件好吗?我不知道如何为Windows制定文件路径。
    • 我可以在文件路径名上使用引号吗?
  3. 我用于 tmp db的连接字符串是否正确?
  4. 使用 - props 服务器参数的正确语法是什么?
    • - 道具路径
    • - 道具路径/文件名
  5. 我已经设置了两个环境变量(也保持简单*)。除了保存我的输入外,这些变量没有任何效果。最初我是直接从HSQLDB文件夹加载服务器。

    • HSQLDB_HOME ...当前HSQLDB的主文件夹
    • HSQLDB_DATA ...数据存储库文件夹

    我正在遵循以下步骤:

    每次通过服务器连接时,它都会创建一个名为“test”的数据库,而不是让我连接到server.properties中指定的两个数据库中的任何一个。

    • %HSQLDB_DATA%/
      • test.log中
      • test.properties
      • test.script
      • test.tmp / ..........(文件夹)
      • test.lck

    我在

    中创建了一个' server.properties '文件
    • %HSQLDB_HOME%/ LIB /

    HSQLDB JAR文件所在的位置。我想要两个数据库: tmp dev

      # -- tmp
      server.database.0=file:hsqldb/tmp_db/tmp
      server.dbname.0=tmp_db
      #
      ####
      #
      # -- dev
      server.database.1=file:r:/.data/hsqldb/dev_db/dev
      server.dbname.1=dev_db
    

    我预计属性文件足以设置两个数据库。当我运行hsqldb管理器时,我没有获得tmp的连接说:

    • “JDBC:HSQLDB:HSQL://本地主机/ TMP”
    • 用户:SA,密码:“”

    我收到一个弹出错误:

    • 数据库别名不存在( Manager
    • [Thread [HSQLDB Connection @ 26827674,5,HSQLDB Connections @ 372f7a8d]]:数据库别名= tmp不存在(服务器

    我使用 cmd -line手动创建了这两个,例如名为“ tmp ”:

    • %JAVA_HOME%\ bin \ java.exe -classpath%HSQLDB_HOME%\ lib \ hsqldb.jar org.hsqldb.server.Server org.hsqldb.server.Server --database.1 file: r:/ .data / hsqldb / tmp_db --dbname.1 tmp_db

    可以连接并创建tmp:

    • %HSQLDB_DATA%/ tmp_db /
      • tmp.log
      • tmp.properties
      • tmp.script
      • tmp.tmp / ..........(文件夹)
      • tmp.lck

    作为documentation中的预测。当我使用上述“ server.properties ”文件启动HSQLDB服务器或明确指定属性时:

    • %JAVA_HOME%\ bin \ java.exe -classpath%HSQLDB_HOME%\ lib \ hsqldb.jar org.hsqldb.server.Server --trace true --props%HSQLDB_DATA%

    服务器只允许我连接一个名为“test”的数据库,如问题开头所述。

    因为属性文件看起来很好并且进程内文件连接字符串有效,所以

    • JDBC:HSQLDB:HSQLDB / tmp_db / TMP

    我还在考虑server.properties文件位于错误的位置或由于某种原因未加载。如果有一种方法可以让服务器在开始时转储属性文件,这将是非常好的:-)提前感谢您的建议......

1 个答案:

答案 0 :(得分:1)

我发现了这个问题。首先,感谢本教程:

在审核之后,我意识到了我的错误。

运行服务器脚本时, server.properties 文件必须位于当前文件夹中。我在Running and Using HSQLDB手册页上看到了这个但是误解了它的意思,我将属性文件放在我的%HSQLDB_HOME%/ lib文件夹中。糟糕。

当您查看BAT脚本时,它实际上将当前文件夹更改为%HSQLDB_HOME%/ data 文件夹...

  • cd .. \ data

因此,如果要使用默认的runServer.bat脚本,server.properties文件的默认位置应为:%HSQLDB_HOME%/ data。

对于那些想要从服务器软件中分离数据的人。我使用两个环境变量对默认脚本进行了改进,如下所示。

  • HSQLDB_HOME ...当前HSQLDB的主文件夹
  • HSQLDB_DATA ...数据存储库文件夹

<强> RUNSERVER .BAT:

   @cd /d %HSQLDB_DATA%
   @cd
   @echo.
   @rem __ @pause
   %JAVA_HOME%\bin\java -classpath %HSQLDB_HOME%\lib\hsqldb.jar org.hsqldb.server.Server     %1 %2 %3 %4 %5 %6 %7 %8 %9
   @echo.
   @pause

现在需要%HSQL_DATA%文件夹中的server.properties文件。这很有效。同样对于我的服务器,因为它用于开发/测试,我使用 - trace = true 选项。像很多这些东西,现在我得到它,这一切都很完美。希望我的误解会帮助那些在使用stackoverflow之前没有找到简单教程的人。