Laravel-PDO准备语句-在其他无缓冲查询处于活动状态时无法执行查询 [英] Laravel - PDO Prepared Statement - Cannot execute queries while other unbuffered queries are active

查看:240
本文介绍了Laravel-PDO准备语句-在其他无缓冲查询处于活动状态时无法执行查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法在Laravel中运行以下准备好的语句:

I am having trouble running the following prepared statement in 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();

我收到以下错误:

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

[2017-06-08 03:41:35] local.ERROR: PDOException: 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.

这是我控制器的入口点,因此肯定没有在先的查询正在运行.

This is the entry-point of my controller, so there are definitely no prior queries running.

怎么办?

谢谢

推荐答案

我唯一可行的方法是用"exec"调用替换准备好的语句:

The only way I could get it working was to replace the prepared statement with an 'exec' call:

$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'"
        );

我不知道为什么在Laravel中使用预备语句不能使用它-它确实可以在纯PDO预备语句中使用.

I have no idea why it wouldn't work using a prepared statement in Laravel - it definitely does work with a pure PDO prepared statement.

这篇关于Laravel-PDO准备语句-在其他无缓冲查询处于活动状态时无法执行查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆