Mysql PDO获取时最大LONGBLOB数据长度

时间:2014-07-16 13:21:00

标签: php mysql pdo

我将大约1.1 Mb的数据插入到LONGBLOB类型的Mysql字段中。这远远不是LONGBLOB字段支持的最大长度。

插入似乎有效。

如果我在插入之前执行strlen($data),则返回1059245。

如果我在插入后执行查询:

SELECT OCTET_LENGTH(`data`)...

它返回1059245

但如果我这样做

$stmt = $pdo->prepare("SELECT `data` FROM `tbl_mytable` WHERE `id` = :id LIMIT 1");
$stmt->bindValue(":id", $id, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_ASSOC);
echo strlen($data['data']);

它返回1048576

我的数据似乎在1048576字节后被削减。

为什么我在进行查询时只收到数据的第一个1048576字节?

它是PDO配置,类似于max_fetch_length吗?

1 个答案:

答案 0 :(得分:6)

MYSQL_ATTR_MAX_BUFFER_SIZE默认为1MB。

这解决了这个问题:

    $pdo->setAttribute(PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, 1024*1024*50);  // 50 MB