sqlite 随机获取错误SQLSTATE[HY000][14]无法打开数据库文件-PHP PDO

qnzebej0  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(141)

此错误随机出现。我可以写和读数据库文件,但有时不能工作,即使有相同的请求。
我试图只测试一个连接(以避免多个连接,认为这可能是问题所在),但也随机失败。
我检查了文件(Windows)的权限,一切正常(如果没有权限,我将无法写入文件)
以下是连接到数据库的代码:

class Con{

    private $pdo;

    public function conex($db){

        try{

            // $pdo = $this->pdo;

            if ($this->pdo == null){

                sleep(0.1);
                $this->pdo = new PDO("sqlite:../../content/engine/" . $db,"","",array(
                    PDO::ATTR_PERSISTENT => true
                ));

                $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);      

            } 

            return $this->pdo;

        }catch(PDOException $e){

            die( $e->getMessage());

        } finally{

            $this->pdo = null;

        }
    }
}

class Q_General extends Con{

    protected $db;

    public function __construct($db){

        if ($this->db == null){

            $this->db = $this->conex($db);
        }
        
    } 

    public function get_query($sql){

        $query = $this->db->prepare($sql);
        $query->execute();

        $res = $query->fetchAll();
        $query->closeCursor();

        return $res;

    }
}

我使用AJAX进行请求,所以我可以控制请求的数量和顺序,并为每个请求设置一个队列,目的是避免同时写入或读取。
有什么线索我能做错什么吗?

pbgvytdp

pbgvytdp1#

我终于找到了问题所在,那就是XAMPP。在Xampp中,没有发生,所以我猜问题出在Xampp的配置上,它不能很好地处理SQLite。使用AWait每次创建一个AJAX请求,问题就解决了。

相关问题