【发布时间】:2016-09-27 18:13:31
【问题描述】:
我有一个使用 Sqlite3 作为数据库的多线程 C++ 应用程序。我正在存储 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 数据库连接开始对应于不同线程的多个事务?
提前致谢。
【问题讨论】: