【问题标题】:Laravel unbuffered queries are active errorLaravel 无缓冲查询是活动错误
【发布时间】:2021-03-17 15:02:32
【问题描述】:

前几天我开始在我的 Laravel 应用程序中看到这个错误。奇怪的是我没有推送任何代码更改,它开始给出这个错误。

SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

这是它抱怨的查询之一:

public function addAgents($year)
{
    $result = DB::select("
        INSERT INTO {agents}
        (
            first_name,
            last_name,
            name
        )
        SELECT
        t.first_name,
        t.last_name,
        t.name
        FROM
        (
            SELECT DISTINCT
            first_name,
            last_name,
            CONCAT(first_name, ' ', last_name) AS name
            FROM {data_mart} d
            AND program_year = :year
        ) AS t
        ON DUPLICATE KEY UPDATE
        first_name = t.first_name,
        last_name = t.last_name,
        name = t.name,
    ", [':year' => $year]);
}

我正在使用:MariaDB 10.2.36

有人对如何解决这个问题有任何建议吗?

【问题讨论】:

    标签: php mysql laravel mariadb laravel-query-builder


    【解决方案1】:

    DB::select() 期望得到一个结果集,并且可能会挂起等待一个结果集。相反,according to documentation,您应该使用DB::insert() 来执行INSERT SQL 语句。

    【讨论】:

    • 谢谢。我最终更新了所有删除的插入,并使用相关函数更新了查询,这解决了我的问题。还是很困惑这半年是怎么做到的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2014-01-03
    • 2013-06-30
    • 2014-05-13
    相关资源
    最近更新 更多