PHP仅在数组中存储1048576个字符

时间:2013-04-25 20:10:44

标签: php mysql character limit

我正在开发一个解析大量文本文件并将一些信息存储在MySQL DB中的项目。我注意到其中一个字段在显示时缺少信息,但是,当检查数据库(来自phpmyadmin)时,它显示数据已完成,因此问题必须是php,在数组字段的长度为1048576之前,而DB中有1235597个字符。

我的php信息显示memory_limit是2048M, Mysql配置显示:     的[mysqld]     key_buffer = 32M     max_allowed_pa​​cket = 32M

我不知道还有什么可能导致这个问题...有人请帮忙!!!

谢谢, 肖恩

1 个答案:

答案 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
        ),
    ),
// ...