Java hsqldb*.script.new创建和删除
我有一个以mydata.properties和mydata.script形式的HSQLDB1.8。在mydata.script中,有一些基本SQL语句用于创建模式和填充数据库 当我使用标准Java JDBC调用加载此数据库时,我注意到在文件系统上,似乎发生了以下情况:Java hsqldb*.script.new创建和删除,java,sql,linux,jdbc,hsqldb,Java,Sql,Linux,Jdbc,Hsqldb,我有一个以mydata.properties和mydata.script形式的HSQLDB1.8。在mydata.script中,有一些基本SQL语句用于创建模式和填充数据库 当我使用标准Java JDBC调用加载此数据库时,我注意到在文件系统上,似乎发生了以下情况: 正在创建文件mydata.script.new 已删除文件mydata.script mydata.script.new重命名为mydata.script 如何防止mydata.script被删除?这是正常的HSQLDB行为吗 我
EDIT2:如果上述方法确实不可行,那么是否有办法将此mydata.script(包含所有SQL调用)转换为某种二进制HSQLDB blob格式,该格式仅通过JDBC加载,未经修改?根据您的使用情况,HSQLDB可能不是适合该作业的工具 听起来您希望从多个应用程序访问进程中的数据库,但HSQLDB不支持这一点。从的“管理数据库连接”部分: 在所有运行模式下(服务器或进程中),都支持到数据库引擎的多个连接。进程内(独立)模式支持来自同一Java虚拟机中客户端的连接 因此,如果您希望从单独的进程中获得多个并发连接,您应该在“服务器”模式下使用HSQLDB,但您可能不想为此烦恼 此外,HSQLDB与Java紧密相连,因此,如果您有希望访问数据的非Java应用程序,那么您的生活可能会比需要的更艰难
另一种数据库格式,可能是SQLite,可能更适合您。我找到了我的问题的答案:HSQLDB.properties文件中有一个
修改的属性,当该属性设置为no
时,将阻止在我的问题中观察到的行为。您可以从多个进程同时访问只读HSQLDB数据库。将此行添加到属性文件以使数据库为只读:
readonly=yes
因此,您希望将此HSQLDB数据库用作多个应用程序的持久只读资源,其中一些应用程序未在Java中实现,这些应用程序可能会尝试同时访问数据库。对吗?对。需要做的是使此只读HSQLDB文件/数据始终存在于文件系统中。