php - Load Data Infile 出现无缓冲查询错误

标签 php mysql

我正在关注这里的教程:https://mikaelhoundegnon.wordpress.com/2018/05/02/work-around-of-mysql-load-data-infile-with-on-duplicate-key-update/ 。请注意,以防万一,我正在使用 Laravel 的查询生成器,但对这些特定查询执行原始语句。

我的代码如下:

$sql = "CREATE TEMPORARY TABLE temporary_part SELECT * FROM part WHERE 1=0";
        $con->statement($sql);

        $sql = "LOAD DATA INFILE '$filePath'
                INTO TABLE temporary_part
                FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
                (field1,field2,field3,field4)";
        $con->statement($sql);

然后我收到以下错误:

SQLSTATE[HY000]:一般错误:2014 当其他未缓冲的查询处于事件状态时无法执行查询。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码仅针对 mysql 运行,您可以通过设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性来启用查询缓冲。 (SQL:将数据 INFILE '/path/to/file.csv' 加载到表临时部分字段,终止于 ',' 可选地包含于 '"' (field1,field2,field3,field4))

除了所提供的代码中发生的情况之外,没有任何其他开放查询。我已经确认是 LOAD DATA INFILE 查询引发了错误。我在这里做错了什么吗?

最佳答案

事实证明这实际上是 Laravel Facade DB::connection() 问题。显然,对于 LOAD DATA INFILE 查询,使用 statements() 执行原始语句还不够好,而必须使用 DB::connection()->getPdo()->exec($sql);

关于php - Load Data Infile 出现无缓冲查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55486172/

相关文章:

c# - 在 C# 应用程序中使用 PHP 引擎

PHP Mysql PDO和解锁表

php - 递归获取数组的键并创建下划线分隔的字符串

php - Jquery 脚本未显示在 firebug 或触发中

php - 在 php Rest api 中从数据库获取评级数据到 JSON 数组

php - 换页时可以发送数据吗[分页]

mysql - 查找恰好包含两个给定 child 的单亲 ID

mysql - 无法加载库 RMySQL

php - Laravel 5.3 - 外键约束的形成不正确

Mysql基于时间引用分区