掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
SQLite3の使用について (ID:47827)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして。 この度ユーザーの所にシステムを導入するに当たり、 SQLite3を利用したサーバー/クライアント型のシステムを制作しようと思っています。 SQLiteはサーバー/クライアント型には向いていないのは分かっているのですが、なんとか上手く運用出来ない物かと考えていますが、 SQLiteを使用するが初めてなもので四苦八苦してます。 そこでまずは可/不可を判定する為にテストPGを作成し、 クラサバ環境で実行してみた所「database is locked」のエラーが発生してしまいます。 環境は Delphi XE4 FireDacにて接続 SQLite3(3.8.10.2) DBはサーバー側に配置し、フォルダに共有 仕様としては 1.PG起動時にADConnectionにてDBファイルに接続 2.テーブル(仮にTEST_TBL)をDBGridで表示 3.行ダブルクリックでレコード情報を画面に表示 4.確定ボタン押下で書き込み(この時トランザクションBEGIN〜COMMITしてます) ADConnectionをConnectする際の設定値は with ADOTEST do begin Open('DriverID=SQLite;' + 'Database=\\10.XXX.XXX.XXX\HOYASQL.DB3;' + 'AuthMode=Normal;' + 'BusyTimeput=100000;' + 'SharedCache=False;' + 'LockingMode=Normal;' + 'Synchronous=Normal;' + 'JournalMode=Truncate'); TxOptions.AutoCommit := True; TxOptions.Isolation := xiReadCommitted; UpdateOptions.LockWait := True; UpdateOptions.LockMode := lmPessimistic; UpdateOptions.LockPoint := lpImmediate; end; 以下手順の時、 1.サーバーでPG実行 2.クライアントでもPG実行 3.クライアントでDBGridダブルクリック 4.サーバーでDBGridダブルクリック 5.サーバー側で確定ボタン押下 →ここでロックがかかって止まってしまう。 クライアント側で確定すれば進みます。 上記の現象後は、同処理を行ってもロックがかかりません。 ちなみに 1.サーバーでPG実行 2.クライアントでもPG実行 3.サーバーでDBGridダブルクリック 4.クライアントでDBGridダブルクリック 5.クライアント側で確定ボタン押下 →ここでロックがかかって止まってしまう。 サーバー側で確定すると「database is locked」が即座に表示されます。 やはりデータベースファイル単位でロックがかかっているから不可なのか、 設定がよろしくないのか、色々調べてみたのですが分かりませんでした。 引き続き私の方でも調査はしてますが、 どなたかご存知の方いらっしゃいましたらご教示願います。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.