Laravel-PDO准备语句-在其他无缓冲查询处于活动状态时无法执行查询

mil*_*ils 5 php mysql pdo laravel

我在Laravel中运行以下准备好的语句时遇到麻烦:

$pdo = DB::connection()->getPdo();
$ps_TempTable_PushCsv = $pdo->prepare(
    "LOAD DATA LOCAL INFILE '123'
    INTO TABLE `123`
    CHARACTER SET utf8mb4
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '\"'
    LINES TERMINATED BY '\\n'"
);
$ps_TempTable_PushCsv->execute();
$ps_TempTable_PushCsv->closeCursor();
$rowCount = $ps_TempTable_PushCsv->rowCount();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

[2017-06-08 03:41:35] local.ERROR:PDOException:SQLSTATE [HY000]:一般错误:2014在其他无缓冲查询处于活动状态时,无法执行查询。考虑使用PDOStatement :: fetchAll()。另外,如果您的代码只打算针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲。

这是我的控制器的入口点,因此绝对不会运行任何先前的查询。

做什么?

谢谢

mil*_*ils 6

我能使它起作用的唯一方法是用“ exec”调用替换准备好的语句:

$rowCount = DB::connection()->getpdo()->exec(
            "LOAD DATA LOCAL INFILE '$fileName'
            INTO TABLE $tableName
            CHARACTER SET utf8mb4
            FIELDS TERMINATED BY ','
            OPTIONALLY ENCLOSED BY '\"'
            LINES TERMINATED BY '\\n'"
        );
Run Code Online (Sandbox Code Playgroud)

我不知道为什么在Laravel中使用预备语句不能正常工作-它确实可以用于纯PDO预备语句。