Слишком большой размер строки (> 8126) исключение при добавлении приложения appcenter

Я пытаюсь развернуть центр приложений Worklight для iOS на сервере Websphere Liberty в Windows 8.1. Но я получаю следующее исключение в журналах сервера, когда пытаюсь добавить IBMAppCenter.ipa через консоль appcenter.

Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline. {prepstmnt 1563792952 INSERT INTO APPLICATION_STORAGE (CONTENT, AP_FK) VALUES (?, ?) [params=(InputStream) java.io.ByteArrayInputStream@5987916, (null) null]} [code=1118, state=42000]

Вот сценарий, чтобы воспроизвести мою проблему:

  1. установить mysql 5.6.2 через установщик сообщества mysql
  2. установить сервер приложений Websphere Liberty v8.5.5
  3. установить Worklight Server v6.2
  4. создать IBMAppCenter.ipa через XCode
  5. войдите в appcenterconsole и попробуйте добавить приложение

Я попытался включить сжатие для таблицы APPLICATION_STORAGE, как это предложено hjpotter92 в разделе "Ограничение изменения для" слишком большого размера строки Mysql "", но безуспешно. Любая помощь приветствуется.

РЕДАКТИРОВАТЬ

Вот определение таблицы APPLICATION_STORAGE, которая вызывает проблему:

CREATE TABLE APPLICATION_STORAGE (ID INTEGER NOT NULL AUTO_INCREMENT, CONTENT LONGBLOB, AP_FK INTEGER, PRIMARY KEY (ID)) ENGINE = innodb;

1 ответ

Решение

Увеличение свойства innodb_log_file_size до 256M решило мою проблему. Очевидно, журнал повторов перезаписывает самую последнюю контрольную точку для больших двоичных объектов, как описано здесь: http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-20.html

Важное изменение: повторные записи в журнал для больших, сохраненных извне BLOB-полей могут перезаписать самую последнюю контрольную точку. Патч 5.6.20 ограничивает размер записи журнала повторов BLOB до 10% от размера файла журнала повторов. Патч 5.7.5 устраняет ошибку без наложения ограничений. Для MySQL 5.5 ошибка остается известным ограничением.

В результате ограничения записи BLOB журнала повторов, введенного для MySQL 5.6, для innodb_log_file_size должно быть установлено значение, в 10 раз превышающее максимальный размер данных BLOB, найденный в строках ваших таблиц, плюс длина других полей переменной длины (VARCHAR, VARBINARY и поля типа TEXT). Невыполнение этого требования может привести к ошибкам "слишком большой размер строки". Никаких действий не требуется, если ваш параметр innodb_log_file_size уже достаточно велик или ваши таблицы не содержат BLOB-данных. (Ошибка № 16963396, Ошибка № 19030353, Ошибка № 69477)

Другие вопросы по тегам