Сервер MySQL отключился во время хранения большого (2 МБ) аудиофайла в LONGBLOB

Я хочу сохранить аудиофайл в mysql база данных. я использую LONGBLOB хранить base64 закодированная строка этого аудиофайла. но так же, как я выполняю свой запрос, я получаю это предупреждение без вставки в базу данных:

Warning: mysql_query() [function.mysql-query]: MySQL server has gone away

Когда я загружаю любой файл изображения, я не получаю ошибки, и код работает нормально. это происходит, когда я загружаю видео и аудио файл. ниже в коде я использую:

<?php
include 'database_handler.php';
if(isset($_FILES['fileToUpload']['name'])){
echo "uploading. . .";
$file = rand(0, 10000000).$_FILES['fileToUpload']['name'];
if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $file)) {
if($fp = fopen($file,"rb", 0))
{
$picture = fread($fp,filesize($file));
fclose($fp);
$base64 = base64_encode($picture);
//echo $base64;
$db = new Database();
$db->test($base64);
}
}
}
?>
<form action="test.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>

Вот код функции, которую я вызываю:

function test($base64String){
if (mysql_query("update users set attribute1='$base64String' where id = '83'")){
echo "success";

}else{
mysql_error();
}
}

Спасибо

5

Решение

Пожалуйста, увеличьте /etc/mysql/my.cnf,

wait_timeout = 3600

а также

max_allowed_packet = 128M

и перезапустить

sudo /etc/init.d/mysql restart

Замечания: Почему вы храните аудиофайл в БД, вместо этого сохраните путь к нему и сохраните файл в системе

8

Другие решения

Других решений пока нет …