У меня проблемы с размером строки в mysql. В таблице моей БД я храню картинку в поле среднего размера (16 МБ). Первая версия кода вызвала ошибку в размере строки, поэтому я пытаюсь установить innodb_large_prefix и изменить формат строки на динамический. Это код:
set global innodb_large_prefix = 1;
Create table if not exists `Pictures`
(
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Size` int NOT NULL,
`Type` varchar(25) NOT NULL,
`isUserpic` tinyint DEFAULT false,
`Likes` int(11) DEFAULT 0,
`Pic` mediumblob NOT NULL,
`Date` timestamp NOT NULL,
`User` int(11) NOT NULL,
PRIMARY KEY(`Id`)
)engine=InnoDb default charset=latin1 ROW_FORMAT=DYNAMIC;
Когда я пытаюсь вставить изображение размером более 500-600 КБ, я получаю следующую ошибку (аналогичную предыдущей):
Ошибка: слишком большой размер строки (> 8126). Может помочь изменение некоторых столбцов на TEXT или BLOB или использование ROW_FORMAT = DYNAMIC или ROW_FORMAT = COMPRESSED. В текущем формате строки префикс BLOB размером 768 байт хранится в строке.
Чтобы исправить это, я пытаюсь с помощью:
set global innodb_file_format = Barracuda;
set global innodb_file_format_max = Barracuda;
set global innodb_file_per_table = 1;
, а затем также меняя формат строки:
ROW_FORMAT = COMPRESSED;
Но это решение тоже не работает, поэтому я меняю движок таблицы с InnoDB на MyISAM: ошибка изменилась, и теперь она есть (я пытаюсь вставить изображение размером 1,63 МБ):
MySql Server ушел
Как я могу устранить ошибку о размере строки? Если решение использует MYISAM в качестве движка, как я могу исправить ошибку и почему сервер "ушел"?