>>277
確かに PDOStatement を foreach でイテレートした時だけロックが開放されてないな
https://bugs.php.net/report.php から報告した方がいい

$con = new PDO('sqlite:test.db');
if (!$con->query("SELECT 1 FROM sqlite_master WHERE type='table' AND name='t'")->fetch()) {
    $con->query('CREATE TABLE t (c INT)');
}

$con->query('INSERT INTO t VALUES (1)');

foreach ($con->query('SELECT * FROM t LIMIT 1') as $row) {
    trigger_error('abort', E_USER_ERROR); # test.db not unlocking
}


バフフィックスされるまでの回避策は
foreach($result as $row) {
を止めて
foreach ($result->fetchAll() as $row) {
または
while ($row = $result->fetch()) {
スタイルを利用するぐらいか