• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Spring boot + JPA + MySQL 在创建表时自动加 ROW_FORMAT

武飞扬头像
SACKings
帮助1

Spring jpa 中默认使用hibernate做ORM, hibernate会自动根据实体类建表. 这时如果你的表中有text,blob等字段的话经常会报下面这样的错误。

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

那么怎么在创建表时改ROW_FORMAT呢? 一种简单的办法就是重写MySQL5Dialect里的getTableTypeString 方法。

public class MySQL5CustomInnoDBDialect extends MySQL5Dialect{

    public String getTableTypeString() {
        return super.getTableTypeString()   " ROW_FORMAT=COMPRESSED";
    }   
}

当然, 别忘了在application.yml设置JPA使用你定义的Dialect。

jpa:
    database: MYSQL # Specify the DBMS
    properties:
        hibernate:
           dialect: com.wehealth.dtp.dao.MySQL5CustomInnoDBDialect

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcbcca
系列文章
更多 icon
同类精品
更多 icon
继续加载