You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在只读文件系统中使用UpscaleDB事务?

背景

我用C#和UpscaleDB开发了一个应用,此前运行正常。最近将存储数据库文件的网络驱动器设置为只读模式后,尽管我的应用仅从UpscaleDB文件读取数据,却开始抛出failed with OS status 5 (Access is denied.)异常。

代码情况

我用以下代码打开*.hdb文件:

var env = new Upscaledb.Environment();
var file = IO.Path.Combine(path, "data.hdb");
if (IO.File.Exists(file))
{
  let flags = Upscaledb.UpsConst.UPS_ENABLE_TRANSACTIONS;
  env.Open(file, flags);
}

我发现添加Upscaledb.UpsConst.UPS_READ_ONLY标志可以解决上述异常,但在使用事务系统时(此部分为F#代码)又出现异常:

use txn = this.Env.Begin()
let rslt = f(txn)
txn.Commit() // <-- 抛出 "failed with OS status 5 (Access is denied.)"

根据文档,存在一个用于只读事务的标志Upscaledb.UpsConst.UPS_TXN_READ_ONLY,但使用它并未改变现状。
另外我注意到,传入f的所有读取操作都能正常执行,调试时可以看到从数据库文件中读取到了正确的数据。

问题

是否可以在只读文件系统中使用UpscaleDB事务?或者我只能重写系统以移除事务?

内容的提问来源于stack exchange,提问作者LA.27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:03:24