gpt4 book ai didi

c++ - 是否允许在同一个 Sqlite 数据库连接中启动多个事务?

转载 作者:太空狗 更新时间:2023-10-29 23:13:42 25 4
gpt4 key购买 nike

我有一个多线程 C++ 应用程序,它使用 Sqlite3 作为数据库。我正在存储需要访问数据库的 SQLite 数据库连接和线程,使用相同的连接创建自己的事务。

我使用以下命令获取数据库连接。

const int errorCode =  sqlite3_open_v2(fileNameUtf8.c_str(), &Handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_FULLMUTEX, Vfs->GetName().c_str()); 

但是由于多个线程正在访问数据库,我面临着在同一个连接中启动多个事务的问题。当第二个线程尝试开始事务时,返回错误消息“无法在事务中启动事务”。

我认为 SQLITE_OPEN_FULLMUTEX 标志允许多个线程使用同一连接的情况。我假设它甚至可能允许在同一个连接中进行多个事务。

Sqlite3 中是否有任何选项可以使用相同的 SQLite 数据库连接开始对应于不同线程的多个事务?

提前致谢。

最佳答案

在SQLite中,一个连接对应一个事务。要获得单独的交易,您需要单独的连接。

只有当线程确保它们的事务和 SQL 语句不会相互干扰时,从多个线程访问一个连接才有意义。

另请阅读 FAQ .

关于c++ - 是否允许在同一个 Sqlite 数据库连接中启动多个事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37516785/

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