我目前在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以只读方式打开我的数据库?
答案 0 :(得分:3)
我认为您要链接的特定于.NET的信息,因此它可能不适用于此处。
如果查看the code,persistent只调用SQLite C函数sqlite3_open
,该函数只接受数据库的文件名。
如果您想将连接设为只读,看起来需要使用带有其他标志的sqlite3_open_v2
。
但是,您可以使用文件权限实现相同的功能,因为如果用户没有权限,则无法编写SQLite DB文件。
答案 1 :(得分:0)
Persistent现在支持连接字符串中的Sqlite3-URI语法,如下所示:
https://github.com/yesodweb/persistent/wiki/Database-Configuration
因此,对于只读这样的东西:
URI文件名样式,相对路径,只读:"文件:sqlite3.db?mode = ro"