我在 SQLite 上使用 c# 和 NHibernate。System.Data.SQLite 版本 1.0.88 SQLite 版本 3.7.17
我最近发现了 SQLite WAL 模式,它看起来正是我所需要的。问题是我似乎无法让它工作。
该文档简单地指出:
要转换为 WAL 模式,请使用以下 pragma:
PRAGMA journal_mode=WAL;
journal_mode pragma 返回一个字符串,它是新的日志模式。成功时,编译指示将返回字符串“wal”。如果无法完成到 WAL 的转换(例如,如果 VFS 不支持必要的共享内存原语),那么日志模式将保持不变,并且从原语返回的字符串将是先前的日志模式(例如“删除”)。
我在代码中都试过了:
ISQLQuery query = session.CreateSQLQuery("PRAGMA journal_mode=WAL;");
object result = query.UniqueResult();
在SQLiteman管理应用程序中。
在每种情况下,我都会得到一个“删除”的返回值。ie 数据库未能进入 WAL 模式。麻烦的是,我不知道为什么.. 我在文档中看到的唯一可能性是您的文件系统不支持共享内存原语,但我在 Win 7 上,所以这不是问题。
任何想法如何启用 WAL 模式或找出它为什么不起作用?