【问题标题】:How to ensure HSQLDB properties configuration loaded on Windows?如何确保在 Windows 上加载 HSQLDB 属性配置?
【发布时间】:2014-06-22 03:05:15
【问题描述】:

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

  1. 服务器是否有日志或调试选项,以便我可以检查加载的属性和文件路径等?
  2. 我的属性文件正常吗?我不确定如何为 Windows 制定文件路径。
    • 我可以在文件路径名上使用引号吗?
  3. 我用于 tmp 数据库的连接字符串是否正确?
  4. 使用 --props 服务器参数的正确语法是什么?
    • --道具路径
    • --props 路径/文件名

我已经设置了两个环境变量(也保持简单*)。这些变量除了保存我的输入之外没有任何作用。最初我是直接从 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 文件在哪里。我想要两个数据库:tmpdev

  # -- 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://localhost/tmp"
  • 用户:SA,密码:“”

我收到一个弹出错误:

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

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

  • %JAVA_HOME%\bin\java.exe -classpath %HSQLDB_HOME%\lib\hsqldb.jar org.hsqldb.server.Server org.hsqldb.server.Server --database.1 文件: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 文件位于错误的位置或由于某种原因未加载。如果服务器有办法在启动时转储属性文件,那就太好了:-) 提前感谢您的建议...

【问题讨论】:

    标签: java windows window hsqldb


    【解决方案1】:

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

    查看此内容后,我意识到我的错误。

    服务器脚本运行时,server.properties 文件必须位于当前文件夹中。我在Running and Using HSQLDB 手册页上读过它,但误解了它的含义,我将属性文件放在我的 %HSQLDB_HOME%/lib 文件夹中。哎呀。

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

    • cd ..\数据

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

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

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

    运行服务器.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
    

    现在需要我的 server.properties 文件位于 %HSQL_DATA% 文件夹中。那行得通。同样对于我的服务器,因为它用于开发/测试,所以我使用 --trace=true 选项。就像很多这样的事情,现在我明白了,这一切都很有意义。希望我的误解能帮助那些在求助于 stackoverflow 之前没有找到简单教程的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多