【问题标题】:Row size too large (> 8126) exception on adding appcenter application添加 appcenter 应用程序时行大小过大 (> 8126) 异常
【发布时间】:2014-08-11 14:46:48
【问题描述】:

我正在尝试在 Windows 8.1 上的 Websphere Liberty 服务器上部署适用于 iOS 的 worklight 应用程序中心。但是当我尝试通过 appcenter 控制台添加 IBMAppCenter.ipa 时,服务器日志中出现以下异常。

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 社区安装程序安装 mysql 5.6.2
  2. 安装 Websphere Liberty 应用服务器 v8.5.5
  3. 安装 Worklight Server v6.2
  4. 通过 XCode 生成 IBMAppCenter.ipa
  5. 登录到 appcenterconsole 并尝试添加应用程序

我尝试按照 hjpotter92 在Change limit for "Mysql Row size too large" 上的建议为表 APPLICATION_STORAGE 启用压缩,但没有任何运气。任何帮助将不胜感激。

编辑

这是导致问题的APPLICATION_STORAGE表的定义:

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

【问题讨论】:

  • 对于 android 我可以毫无问题地部署 appcenter 应用程序。
  • @M Khalid Junaid 问题确实类似,我在我的问题中也引用了stackoverflow票。但是上下文不同; Worklight 是数据库方案的所有者,我在安装 Worklight 应用程序中心时不需要更改它。顺便说一句,我尝试了提出的解决方案,但这没有用。
  • Hans,仅供参考 - Worklight 不拥有 MySQL,也不会为您安装它。你安装它,如果它的默认设置不符合你的需要,你需要配置它。
  • 大声笑,我只是假设它会按照知识中心的描述工作。我的需求并不特别,我只想安装 appcenter 并让它与 iPad 上的 hello world 应用程序一起工作。如果要让这个非常简单的基本 POC 正常工作需要某种自定义配置,则应在 IBM 知识中心中指出。如果我得到它的工作,我会发布答案,谢谢你的努力。

标签: mysql ibm-mobilefirst worklight-appcenter


【解决方案1】:

将 innodb_log_file_size 属性增加到 256M 解决了我的问题。显然,重做日志会覆盖大 blob 的最新检查点,如下所述: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,该错误仍然是一个已知限制。

由于 MySQL 5.6 引入了重做日志 BLOB 写入限制,innodb_log_file_size 的值应设置为大于表行中发现的最大 BLOB 数据大小加上其他可变长度字段长度的 10 倍( VARCHAR、VARBINARY 和 TEXT 类型字段)。否则可能会导致“行大小太大”错误。如果您的 innodb_log_file_size 设置已经足够大或者您的表不包含 BLOB 数据,则无需执行任何操作。 (错误 #16963396、错误 #19030353、错误 #69477)

【讨论】:

  • 仅供参考:在带有 XAMPP 的 OSX 上...只需使用 MySql 工作台更改“选项”文件,该文件会将这一行插入 my.cnf。但是,这对问题没有帮助。
猜你喜欢
  • 2019-05-17
  • 2017-08-06
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多