我目前使用来自 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/