gpt4 book ai didi

c++ - 在READONLY模式下打开数据库时出现SQLITE_CANTOPEN错误

转载 作者:行者123 更新时间:2023-12-02 10:21:11 25 4
gpt4 key购买 nike

我想以READONLY方式打开数据库:

exit = sqlite3_open_v2( "database.db?immutable=1" , &db_ , SQLITE_OPEN_READONLY | SQLITE_OPEN_URI , nullptr );

但我收到错误消息:SQLITE_CANTOPEN,知道为什么吗?

如果我这样打开,则打开成功:
exit = sqlite3_open( "database.db" , &db_ );

最佳答案

使用SQLITE_OPEN_URI时,“文件名可以解释为URI”。但是,要将其视为URI,必须以file:为前缀,否则它将被视为普通文件名。

因此,您正在尝试打开一个名为database.db?immutable=1的文件,该文件显然不存在。请注意,使用SQLITE_OPEN_READONLY“如果数据库尚不存在,则返回错误”。因此,最简单的解决方法就是使字符串成为file:database.db?immutable=1

但是,我建议您仅使用一种提供特殊选项的方法。使用SQLITE_OPEN_URI标志,然后将所有其他选项放入URI,如下所示:file:database.db?mode=ro&immutable=1

(我意识到并不是所有的选项组合都只能通过一种方法实现,但就您而言,是这样,所以我说坚持一个,那么您就不必担心不同方法之间的交互方式了)。

SQLite有大量的文档,您可以阅读有关打开数据库here的全部信息。

关于c++ - 在READONLY模式下打开数据库时出现SQLITE_CANTOPEN错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60100147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com