ローカルホスト(Win NT)にsqliteデータベースがあり、バックアップしたい。このタスクを実行するためにシェルコマンド「.backup」を使用したいと思います。しかし、バックアッププロセス中にデータベースに新しい行を挿入できるようです。
'.backup'シェルコマンドはデータベースで新しい排他的トランザクションを開始しますか?
'.backup'シェルコマンドを実行すると、データベースがロックされると思いました。
ローカルホスト(Win NT)にsqliteデータベースがあり、バックアップしたい。このタスクを実行するためにシェルコマンド「.backup」を使用したいと思います。しかし、バックアッププロセス中にデータベースに新しい行を挿入できるようです。
'.backup'シェルコマンドはデータベースで新しい排他的トランザクションを開始しますか?
'.backup'シェルコマンドを実行すると、データベースがロックされると思いました。
sqlite3 のバックアップ方法はデータベースをロックしません。データベースをロックしたい場合は、次の回避策を使用することをお勧めします。
INSERT
ステートメントを使用すると、データベースは予約済みロックを取得します。ただし、このINSERT
ステートメントは空にすることができます。ROLLBACK
またはを使用してトランザクションを終了しCOMMIT
ます。コード:
BEGIN;
INSERT INTO <anytable> SELECT * FROM <anytable> WHERE 1=0;
.backup <database> <file>
ROLLBACK;
'backup' という名前のテーブルを使用していて、各コピーに行 (日付など) を挿入している場合 (この情報が関連している場合) は、あまりハッキリしない方法です。