2

我想通过将 URI 传递给 SQLite 来创建一个共享的内存数据库file:memdb1?mode=memory&cache=shared

以下代码看起来很简单,可以完成工作:

#include <iostream>
#include <sqlite3.h>

void main()
{
  sqlite3 * db;
  int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_URI;
  int returnCode = sqlite3_open_v2("file:memdb1?mode=memory&cache=shared", &db, flags, NULL);

  if (returnCode == SQLITE_OK)
    std::cout << "Success!" << std::endl;
  else
    std::cout << "Error: " << sqlite3_errmsg(db) << std::endl;

  if (db) sqlite3_close(db);
}

然后我像这样编译它:

$ g++ sample.cpp -lsqlite3

这就是我得到的:

$ ./a.out
Error: no such access mode: memory

我已经尝试了许多不同的配置flags(其中一些包括SQLITE_OPEN_MEMORY),但我无法让这个简单的程序运行。我已经在 Windows(使用 SQLite 3.7.15 的自定义构建)和 Ubuntu(使用默认apt-get包,版本 3.7.9)上尝试了它,但没有成功。

有没有人遇到过这个并找到了解决方案?

4

1 回答 1

1

原来我使用了错误版本的 SQLite。SQLite 在 3.7.13 版之前不支持共享缓存(请参阅更改日志)。

于 2012-12-12T21:27:02.160 回答