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 を使用していたことが判明しました。共有キャッシュは、バージョン 3.7.13 まで SQLite でサポートされていません ( changelogを参照)。

于 2012-12-12T21:27:02.160 に答える