haskell - 如何以持久的只读模式打开 Sqlite3 数据库?

标签 haskell sqlite readonly yesod persistent

我目前使用来自 persistent-sqlite 的 createSqlitePool:

import Database.Persist.Sqlite

createSqlitePool "mydb.db" 10

根据 Sqlite3 文档,我可以在连接字符串中传递附加参数,例如

"Data Source=c:\mydb.db;Version=3;Read Only=True;"

比照。 https://www.connectionstrings.com/sqlite-net-provider/read-only-connection/

显然,不可能简单地将此连接字符串传递给 createSqlitePool。有没有办法告诉 persistent-sqlite 以只读方式打开我的数据库?

最佳答案

我认为这是您链接到的特定于 .NET 的信息,因此它可能不适用于此处。

如果你看the code , persistent 只是调用 SQLite C 函数 sqlite3_open它只采用数据库的文件名。

如果您想将连接设置为只读,它看起来需要使用带有额外标志的 sqlite3_open_v2

不过,您可能可以使用文件权限来实现相同的目的,因为如果用户没有权限,他们将无法写入 SQLite 数据库文件。

关于haskell - 如何以持久的只读模式打开 Sqlite3 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31345498/

相关文章:

haskell - 有状态版本的 map (Haskell)

c - 如何在C中检查文件是否处于只读模式

windows - 如何从 Perl 中的文件中清除只读标志?

list - 类似的函数应用于 Haskell 中的嵌套列表

haskell - 处理 readFile 和 writeFile 异常的正确方法

Haskell 的性能改进

Android SQLite 插入或替换

c++ - QT query.exec() 始终返回 false

sql - 如何在SQL中选择所有值并隐藏NULL值?

c# - 实现对公众只读但对继承人可写的属性的最佳方法是什么?