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


服务器是否有日志或调试选项,以便我可以检查加载的属性和文件路径等?
我的属性文件可以吗?我不确定如何为Windows制定文件路径。

我可以在文件路径名上使用引号吗?

我用于tmp db的连接字符串正确吗?
使用--props服务器参数的正确语法是什么?

--props路径
--props路径/文件名



我设置了两个环境变量(太简单了*)。这些变量除了保存我的输入没有任何作用。最初,我是直接从HSQLDB文件夹加载服务器。


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


我正在按照以下步骤操作:



Running and Using HSQLDB



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


%HSQLDB_DATA%/

测试日志
test.properties
测试脚本
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:// localhost / tmp”
用户:SA,密码:“”


我收到一个弹出错误:


数据库别名不存在(Manager)
[线程[HSQLDB连接@ 26827674,5,HSQLDB连接@ 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.tmp / ..........(文件夹)
tmp.lck



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


%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文件放置在错误的位置或由于某种原因未加载,我被遗弃了。如果服务器在启动时有一种方法可以转储属性文件,那就太好了:-)在此先感谢您的建议...

最佳答案

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


HSQLDB Installation


经过审查后,我意识到我的错误。

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

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


光盘.. \ 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之前尚未找到简单教程的人。

关于java - 如何确保Windows上加载了HSQLDB属性配置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24347777/

10-12 03:52