我将大约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吗?
答案 0 :(得分:6)
MYSQL_ATTR_MAX_BUFFER_SIZE默认为1MB。
这解决了这个问题:
$pdo->setAttribute(PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, 1024*1024*50); // 50 MB