【问题标题】:HSQLDB - which is the main database fileHSQLDB - 这是主数据库文件
【发布时间】:2011-09-22 06:04:10
【问题描述】:

我在嵌入模式下使用 HSQLDB。

jdbc:hsqldb:file:abc\\TESTDB;

创建数据库后,文件夹abc有以下文件:

TESTDB.lck TESTDB.script TESTDB.log TESTDB.properties

我的应用程序运行正常

但我的问题是上面列出的文件中哪个是主数据库文件?

还是主数据库文件存储在其他位置?

【问题讨论】:

    标签: java database hsqldb


    【解决方案1】:

    由于各种原因,包含您的实际数据的文件可能不存在于您的文件夹中 - 特别是在您使用内存或非缓存表时。 HSQLDB 出于各种原因使用您在其工作文件夹中找到的各种文件。你可以在这里阅读更多关于他们的目的:HSQLDB Reference

    我转述一些更相关的信息:

    脚本文件包含 表的定义和其他 数据库对象,加上数据 非缓存表。日志文件 包含最近的更改 数据库。数据文件包含 缓存表和备份的数据 文件是最后一个压缩备份 数据的已知一致状态 文件。所有这些文件都是必不可少的 并且永远不应该被删除。如果 数据库没有缓存表,则 test.data 和 test.backup 文件将 不在场。除了那些 文件,HSQLDB 数据库可以链接到任何 格式化的文本文件,例如 CSV 列表,磁盘上的任何位置。

    虽然“测试”数据库是 可操作,使用 test.log 文件 写入对数据所做的更改。 该文件被正常删除 关掉。否则(有异常 关机)此文件用于 下次启动以重做更改。一种 test.lck 文件也用于记录 数据库是开放的事实。 这在正常关机时被删除。 在某些情况下,test.data.old 之后创建和删除。

    【讨论】:

    • 请更正。没有 testdb.data 文件,因为他只有默认的 MEMORY 表,没有 CACHED 表。他所有的文件一起构成了数据库。
    • 我将他指向包含实际数据的文件,如他的问题所示。但是,我编辑了我的答案,以更清楚地说明 HSQLDB 中的各种文件的用途。
    • +1 表示改进。他的数据在脚本和日志文件中,不会进入数据文件,因为他只有内存表。
    【解决方案2】:

    .script 包含创建表、更改表和插入数据的所有语句。该文件是在内存中使用 hsqldb 时创建的。 (所以我会说这是你的数据库) 否则数据库存储在 .data 中,正如其他人已经说过的那样

    .lck是锁文件,hsqldb通过它知道数据库是否被进程锁住了。通常你只有在程序运行时才有这个文件,当你停止程序时它会自动删除。

    .log 包含运行事务的内部日志语句以及一些提交或回滚点。

    .properties 包含用于初始化 hsqldb 的属性(如果您不知道自己在做什么,最好不要在那里更改任何内容)。不要与持久性单元配置混淆。

    亲切的问候

    【讨论】:

    • 感谢 peshkira。由于创建的表位于 MEMORY 中,我认为唯一的脚本文件是 DB 文件并且没有 .data 文件(因为我没有使用 CACHED 表)
    • 如果有人登陆这里并正在寻找一种方法来创建 .data 文件(即:将新表创建为 CACHED;只需将 ;hsqldb.default_table_type=cached 添加到jdbc.url 连接字符串。
    【解决方案3】:

    我认为在将记录添加到数据库后应该有一个.data 文件。如果我错了,这里是给你的文档:

    http://hsqldb.org/doc/guide/apc.html

    http://hsqldb.org/doc/guide/ch04.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2013-04-16
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多