2

sqlite3 で動作するクラスを作成
しています。多数のクエリを処理しているため、データベースがロックされることがあります。そのために、次のようなメソッドsqlite3_unlock_notify()
を使用したいと思います 。

if (!strcmp(err, "database is locked")){
                if (sqlite3_unlock_notify(database, NULL, NULL) == SQLITE_OK)
                    return [self perfomQuery:query Error:error];
            }

今問題は、次のようなビルドの赤い警告が表示されることです:

アーキテクチャ i386 の未定義のシンボル: "_sqlite3_unlock_notify", referenced from:...

誰かがそれについて何をすべきか知っていますか?
明確にするために:私はlibsqlite3.0.dylib
10xを使用しています

4

2 に答える 2

1

sqlite3 のコンパイル時にオプションのフラグ SQLITE_ENABLE_UNLOCK_NOTIFY が含まれていなかったため、これが発生している可能性があると思います。

Makefile を再チェックして、このフラグをチェックし、省略されている場合はインクルードしてください。

このフラグの詳細については、 http://www.sqlite.org/compile.html#enable_unlock_notifyを参照してください。それが役に立てば幸い。

于 2013-01-29T11:28:51.883 に答える
0

sqlite3_unlock_notify同じプロセス内の複数の接続が共有キャッシュ モードで同じデータベースにアクセスする場合にのみ使用できます。これは、マルチスレッド サーバーでのみ有用であるため、SQLite 構成から除外されています。

データベース接続が 1 つだけになるように、アプリを再編成する必要があります。

于 2012-12-02T21:22:33.850 に答える