我正在使用C#和NHibernate开发SQLite。 System.Data.SQLite版本为1.0.88,SQLite版本为3.7.17。
最近我了解到SQLite的WAL模式,看起来正是我所需要的。问题是我似乎无法让它正常工作。
文档简单地说明:
要转换为WAL模式,请使用以下pragma:
PRAGMA journal_mode=WAL;
journal_mode pragma返回一个字符串,表示新的日志模式。成功后,pragma将返回字符串“wal”。如果无法完成转换到WAL(例如,如果VFS不支持必要的共享内存原语),则日志记录模式将保持不变,并从原始原语返回字符串作为先前的日志记录模式(例如“delete”)。
我已经尝试在代码中执行这个操作:
ISQLQuery query = session.CreateSQLQuery("PRAGMA journal_mode=WAL;");
object result = query.UniqueResult();
并且在SQLiteman管理应用程序内部。
在每种情况下,我都得到一个'return'值。也就是说,数据库无法进入WAL模式。 问题是,我不知道为什么。文档中唯一可能的原因是您的文件系统不支持共享内存基元,但我使用的是Win 7,所以这不是问题。
有什么办法可以启用WAL模式或找出为什么它不起作用吗?