提示された順序で次のことを行う PHP スクリプトがあります。
- MySQL データベースに接続する
- 1 行のデータを取得する
- MySQL データベース接続を閉じる
- ローカル ファイル システム上の SQLite データベースに接続する
- データの行を SQLite データベースに挿入します
- SQLite データベース接続を閉じる
MySQL と SQLite の両方の手段として PDO を使用しています。挿入のコードは次のとおりです。
$sqlite = new PDO('sqlite:activity.sqlite');
$sqlite->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$lite = <<<LITE
INSERT INTO Transactions (Date,Transactions,ActiveMembers,Amount)
VALUES
('$day',
'$trans',
'$active',
'$amount');
LITE;
try
{
$sqlite->exec($lite);
}
catch (PDOException $e)
{
die($e->getMessage());
}
(適切な準備されたステートメントではなく、クエリでの変数の使用を許してください。バインドされたパラメーターを削除して、それが問題であるかどうかを確認しました)
他のツール (Firefox 用の SQLite Manager、Windows 用の SQLite Database Browser) を使用して、データベースにアクセスして書き込むことができます。
このスクリプトは、この特定のデータベースに触れる唯一のものです。データベース ファイルの権限は777
. スクリプトの実行時に、それまたはそれを含むディレクトリを開くものは他にありません。
スクリプトを ( を使用してphp -f
) 実行すると、SQLite データベースに挿入しようとする部分でジャーナル ファイルが作成され、約 10 ~ 15 秒かかり、エラーが返されますSQLSTATE[HY000]: General error: 5 database is locked
。
それでは、私の質問は次のとおりです。
コマンド ラインから PHP スクリプトを実行すると、SQLite データベースとのやり取りが妨げられることはありますか? もしそうなら、何?そうでない場合、ここで何が問題になる可能性がありますか?