栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring boot + JPA + MySQL 如何在创建表时自动加 ROW

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring boot + JPA + MySQL 如何在创建表时自动加 ROW

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591517.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号