Есть таблица в которой есть поле blob пытаюсь вставить в него изображение 37 159 235 байт. Ограничение max_allowed_packet - 33554432 байт. Пытаюсь сделать следующим образом:
$stmt = $db->prepare('INSERT INTO `images` ( `image` ) VALUES ( ? ) ');
$max = 33554432;
$null = null;
$stmt->bind_param('b', $null);
$img = fopen('index.jpg', 'r');
while (!feof($img)) {
$stmt->send_long_data(0, fread($img, $max));
}
fclose($img);
if($stmt->execute() === false){
dd($stmt->error)
}
Но данный вариант выкидывает warrning: Error while sending STMT_SEND_LONG_DATA packet. PID=4540
А $stmt->error выводит MySQL server has gone away
Если читать данные из файла размером меньшим чем $max, например 8192, то $stmt->error выдает: Parameter of prepared statement which is set through mysql_send_long_data() is longer than 'max_allowed_packet' bytes
Можно ли каким-либо образом побороть данный порок не увеличивая max_allowed_packet сервера бд?