我正在开发一个解析大量文本文件并将一些信息存储在MySQL DB中的项目。我注意到其中一个字段在显示时缺少信息,但是,当检查数据库(来自phpmyadmin)时,它显示数据已完成,因此问题必须是php,在数组字段的长度为1048576之前,而DB中有1235597个字符。
我的php信息显示memory_limit是2048M, Mysql配置显示: 的[mysqld] key_buffer = 32M max_allowed_packet = 32M
我不知道还有什么可能导致这个问题...有人请帮忙!!!
谢谢, 肖恩
答案 0 :(得分:2)
PDO的默认缓冲区大小为1 MB(1048576),尝试将其提升至2 MB(2097152)
如果您直接使用PDO,请将此作为第4个参数传递
$pdo = new PDO(
$dsn,
$username,
$password,
array(PDO::MYSQL_ATTR_MAX_BUFFER_SIZE => 2097152)
);
如果您使用的是Laravel,可以通过config / database.php文件为您的连接添加一系列选项来完成此操作
// ...
'mysql' => array(
'driver' => 'mysql',
// ...
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'options' => array(
PDO::MYSQL_ATTR_MAX_BUFFER_SIZE => 2097152
),
),
// ...