gpt4 book ai didi

php - 加载数据 infile 和无缓冲查询错误

转载 作者:可可西里 更新时间:2023-11-01 07:04:29 25 4
gpt4 key购买 nike

我正在尝试从文件中加载表格,但遇到了困难。下面的代码试图获取现有数据库并将其复制到临时表,然后用从 .csv 文件导入的数据替换原始数据库,然后在我放手之前我还有更多工作要做比较两个表临时的。 (如果我应该以不同的方式执行此操作,欢迎提示)。我收到错误:

'SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll()...'

我已经尝试了很多类似问题的建议,但还没有破解。谢谢你的帮助!这是我的代码:

<?php
//database connection
$data_source = 'mysql:host=localhost;dbname=myDB';
$db_user = 'root';
$db_password = 'pass';
$conn = new PDO($data_source, $db_user, $db_password,
array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT));

if ( isset($_GET['submit']) ){
$stmt = $conn->prepare("CREATE TEMPORARY TABLE mfsw_dupe AS SELECT * FROM mfsw_test");
$stmt->execute();

$stmt = $conn->prepare("TRUNCATE mfsw_test");
$stmt->execute();

$stmt = $conn->prepare("LOAD DATA LOCAL INFILE 'C:\\xampp\htdocs\assets\mfsw_test.csv' INTO TABLE mfsw_test
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES");
$stmt->execute();
}
?>

最佳答案

在尝试了针对此问题的所有推荐解决方案后,我发现答案是将 PDO::ATTR_EMULATE_PREPARES 选项设置为 true。

这消除了“无缓冲查询”错误,但随后它开始在 LOAD 查询中报告“LOAD DATA LOCAL INFILE forbidden”错误。

解决方案是将 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 选项也设置为 true。

简而言之,您的初始连接应如下所示:

$conn = new PDO($data_source, $db_user, $db_password,
array(PDO::ATTR_EMULATE_PREPARES => true,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT));

我不明白为什么这些选项是必要的,但它们对我有用。

关于php - 加载数据 infile 和无缓冲查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com