【发布时间】:2014-05-26 10:18:10
【问题描述】:
我最近从 mysql_ 切换到 PDO,这真的很痛苦。一切似乎都那么复杂。
过去我开发了一个系统,用户可以在其中导入包含记录的 csv。然后将这些行通过 while 循环导入数据库。它在 mysql_query 上完美运行。但是在 PDO 上,每当我尝试导入超过 3k 行时,它总是会给出错误 Mysql has gone away 并且进程在两者之间中断。
这是一个真正的问题,因为我的文件包含超过 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_。
谢谢。
【问题讨论】: