使用PHP连接到使用ODBC的MS Access DB保持锁定

时间:2014-09-09 01:18:24

标签: php ms-access locking odbc

我知道这不是最好的设置,但我坚持使用它并且无法改变它。

PHP连接到本地MS Access DB(.mdb)以记录脚本正在执行的某些活动。当只有一个脚本实例正在运行时,这样可以正常工作。但是,如果运行两个实例,我偶尔会收到以下错误:

odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Could not update; currently locked., SQL state S1000 in SQLExecDirect

这只是间歇性地发生,所以我假设它只是当两个脚本碰巧试图同时写入同一个表时。我从来没有遇到像MySQL这样的其他数据库这个问题。如何锁定PHP / ODBC / Access,或者如果它被锁定,我怎么能再次尝试?

我通常也会在屏幕上打开Access DB以进行故障排除。

1 个答案:

答案 0 :(得分:0)

如果查询失败,

odbc_exec()返回FALSE,因此您只需检查查询结果并继续尝试直到成功:

$sql = "UPDATE [Clients] SET [Position]='somewhere' WHERE [ID]=1";
while (TRUE) {
    $result = odbc_exec($conn, $sql);
    if ($result) {
        break;
    }
    else {
        $lastError = odbc_error();
        if ($lastError != "S1000") {
            echo "ODBC error $lastError";
            break;
        }
    }
    sleep(1);
}