1

頻繁に閲覧する sqlite データベースに時々書き込むにはどうすればよいですか? 私はPHPを使用していますが、それは実際には問題ではありません。query() が を返しSQLITE_BUSY、もう一度試すことができbusyTimeout、助けを求めることができることは理解していますが、データベースに独自に待機するように指示する組み込みの方法があることを願っています。現在、私は使用しています:

function wait_query_db($db, $query) {
    do {
        $db->busyTimeout(1000);
        $result = @$db->query($query);
    } while ($db->lastErrorCode() == SQLITE_BUSY);
    return $result;
}
4

2 に答える 2

1

busyTimeout(または同等のPRAGMA busy_timeout)、データベースに待機するように指示する組み込みの方法です。

もっと長く待ちたい場合は、より大きなタイムアウトを使用する必要があります。

PHP が新しく、少なくとも SQLite 3.7 を使用していて、データベースがネットワーク ファイル システム経由でアクセスされていない場合は、先行書き込みログを有効にすることを検討する必要があります。これにより、リーダーとライターが相互にブロックされるのを防ぐことができます。

于 2013-10-26T19:42:19.450 に答える
1

「組み込み」の方法はありません。ビジー タイムアウトを増やします。次を実行して、接続自体に設定できます。

PRAGMA busy_timeout = milliseconds

(SQLite 3.7.15 以降で利用可能)

于 2013-10-26T10:50:08.970 に答える