Прежде чем задать свой вопрос немного: я делаю Data Export/Import, используя MySQL Workbench 6.1 базы данных MySQL 5.5 от одной машины до 5.6 на другой. обе машины - ubuntu один 32-разрядный другой 64-разрядный.
Я дам данные без проблем, но когда я пытаюсь загрузить его, я получаю:
ОШИБКА 1118 (42000) на линии 1807: слишком большой размер строки ( > 8126). Изменение некоторых столбцов в TEXT или BLOB или использование ROW_FORMAT = DYNAMIC или ROW_FORMAT = COMPRESSED может помочь. В формате текущей строки префикс BLOB из 768 байт хранится в строке.
Вот таблица create:
CREATE TABLE `file_content` (
`fileid` bigint(20) NOT NULL,
`content` LONGBLOB NOT NULL,
PRIMARY KEY (`fileid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
У меня есть следующие соответствующие настройки my.cnf...
max_allowed_packet = 1G
innodb_file_per_table = 1
innodb_file_format = Барракуда
Я трачу много времени на поиск в Google, пытаясь понять, в чем проблема. BTW, если я удалю первичный ключ (здесь нет проблем, но жалуется другая таблица с внешним ключом в эту таблицу.
Как повезло, у меня есть ssh-доступ к ящику, поэтому я могу увидеть фактический mysqldb.log. почему я нахожу, что действительно интересно...
2014-08-12 20:42:12 25246 [ERROR] InnoDB: общая длина данных блоба (14179167) больше 10% от размера файла журнала повтора (3072). Увеличьте innodb_log_file_size.
Таким образом, увеличение размера файла журнала повтора до размера 10x LONGBLOB исправило мою проблему. Однако это означает, что для вставки 1G LONGBLOB (то есть фактического максимума из-за размера пакета) мне понадобится 10G innodb_log_file_size.
Может кто-нибудь объяснить, как "ошибка журнала журнала повторения" превращается в "слишком большой размер строки ( > 8126)".
BTW У меня нет контроля над структурой этого db, поэтому нет "почему вы храните большие капли в базе данных".
ТИА