【发布时间】:2011-09-22 06:04:10
【问题描述】:
我在嵌入模式下使用 HSQLDB。
jdbc:hsqldb:file:abc\\TESTDB;
创建数据库后,文件夹abc有以下文件:
TESTDB.lck TESTDB.script TESTDB.log TESTDB.properties
我的应用程序运行正常
但我的问题是上面列出的文件中哪个是主数据库文件?
还是主数据库文件存储在其他位置?
【问题讨论】:
我在嵌入模式下使用 HSQLDB。
jdbc:hsqldb:file:abc\\TESTDB;
创建数据库后,文件夹abc有以下文件:
TESTDB.lck TESTDB.script TESTDB.log TESTDB.properties
我的应用程序运行正常
但我的问题是上面列出的文件中哪个是主数据库文件?
还是主数据库文件存储在其他位置?
【问题讨论】:
由于各种原因,包含您的实际数据的文件可能不存在于您的文件夹中 - 特别是在您使用内存或非缓存表时。 HSQLDB 出于各种原因使用您在其工作文件夹中找到的各种文件。你可以在这里阅读更多关于他们的目的:HSQLDB Reference。
我转述一些更相关的信息:
脚本文件包含 表的定义和其他 数据库对象,加上数据 非缓存表。日志文件 包含最近的更改 数据库。数据文件包含 缓存表和备份的数据 文件是最后一个压缩备份 数据的已知一致状态 文件。所有这些文件都是必不可少的 并且永远不应该被删除。如果 数据库没有缓存表,则 test.data 和 test.backup 文件将 不在场。除了那些 文件,HSQLDB 数据库可以链接到任何 格式化的文本文件,例如 CSV 列表,磁盘上的任何位置。
虽然“测试”数据库是 可操作,使用 test.log 文件 写入对数据所做的更改。 该文件被正常删除 关掉。否则(有异常 关机)此文件用于 下次启动以重做更改。一种 test.lck 文件也用于记录 数据库是开放的事实。 这在正常关机时被删除。 在某些情况下,test.data.old 之后创建和删除。
【讨论】:
.script 包含创建表、更改表和插入数据的所有语句。该文件是在内存中使用 hsqldb 时创建的。 (所以我会说这是你的数据库) 否则数据库存储在 .data 中,正如其他人已经说过的那样
.lck是锁文件,hsqldb通过它知道数据库是否被进程锁住了。通常你只有在程序运行时才有这个文件,当你停止程序时它会自动删除。
.log 包含运行事务的内部日志语句以及一些提交或回滚点。
.properties 包含用于初始化 hsqldb 的属性(如果您不知道自己在做什么,最好不要在那里更改任何内容)。不要与持久性单元配置混淆。
亲切的问候
【讨论】:
.data 文件(即:将新表创建为 CACHED;只需将 ;hsqldb.default_table_type=cached 添加到jdbc.url 连接字符串。
我认为在将记录添加到数据库后应该有一个.data 文件。如果我错了,这里是给你的文档:
【讨论】: