3

我正在研究一个解析大型文本文件并将一些信息存储在 MySQL DB 中的项目。我注意到其中一个字段在显示时缺少信息,但是,在检查数据库时(来自 phpmyadmin),它显示数据是完整的,所以问题一定出在 php 上,在数组字段的长度为 1048576 之前,而 DB 中有 1235597 个字符。

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

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

谢谢,肖恩

4

1 回答 1

2

PDO 的默认缓冲区大小为 1 MB (1048576),尝试将其增加到 2 MB (2097152)

如果您直接使用 PDO,请将其作为第四个参数传递

$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
        ),
    ),
// ...
于 2015-07-03T10:21:31.390 回答