gpt4 book ai didi

php - 如何永久摆脱 Mysql has gone gone 错误

转载 作者:行者123 更新时间:2023-11-30 00:13:21 26 4
gpt4 key购买 nike

我最近从 mysql_ 切换到 PDO,这真的很痛苦。一切看起来都那么复杂。

过去我开发了一个系统,用户可以导入包含记录的 csv。然后通过 while 循环将这些行导入数据库。它在 mysql_query 上完美运行。但是在 PDO 上,每当我尝试导入超过 3k 行时,它总是给出错误 Mysql has gone gone 并且进程在中间中断。

这是一个真正的问题,因为我的文件包含超过 600k 行。我用谷歌搜索了很多,有很多不同的问题解决方案。我已经尝试过这些但没有效果。我已将持久连接设置为 false。下面是连接MYSQL的代码:

public function __construct($driver_options=null) {

try {
parent::__construct('mysql:host='.Database::DB_HOST.';port='.Database::DB_PORT.';dbname='.Database::DB_NAME,
Database::DB_USER, Database::DB_PASS,$driver_options);
$this->setAttribute(PDO::ATTR_TIMEOUT, 10000000000); // to show error
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // to show error
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // defend sql injection
$this->setAttribute(PDO::ATTR_PERSISTENT, false); // defend sql injection

} catch(PDOException $e){
die('Uncaught exception: '. $e->getMessage());
}
}

那么这个问题有什么永久的解决办法吗?或者我应该切换回 mysql_ 。

谢谢。

最佳答案

您应该使用mysql data infile从 csv 加载重要数据。

它非常快(与插入相比,真的 super 快),语法使用起来很简单,你可以用它做任何你想做的事情 - 如果你从 CSV 加载,它肯定可以做你想做的一切。

一个简单的代码示例(从文档中摘取)如下所示:

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

这会将 data.txt 文件加载到名为 tbl_name 的表中。它写道,字段以逗号终止(普通 CSV 内容),每个字段都用双引号括起来 - 并且这些行使用回车符和新行作为分隔符。它还说忽略第一行(其中可能有标题)并从那里开始。

关于php - 如何永久摆脱 Mysql has gone gone 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23867907/

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