码迷,mamicode.com
首页 > 其他好文 > 详细

Specified key was too long; max key length is 767 bytes

时间:2020-07-15 13:02:49      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:highlight   specified   date   bsp   inno   data   字符集   测试环境   cat   

      这个异常是索引长度超出限制 767个字节。

      在测试环境部署flowable时,程序创建flowable表时,出现了【Specified key was too long; max key length is 767 bytes】异常。 这个异常在开发环境是没有的。

建表sql:

CREATE TABLE `FLW_EVENT_DEPLOYMENT` (
  `ID_` varchar(255) NOT NULL,
  `NAME_` varchar(255) DEFAULT NULL,
  `CATEGORY_` varchar(255) DEFAULT NULL,
  `DEPLOY_TIME_` datetime(3) DEFAULT NULL,
  `TENANT_ID_` varchar(255) DEFAULT NULL,
  `PARENT_DEPLOYMENT_ID_` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

  

      开发环境mysql版本:10.4.13-MariaDB-1:10.4.13+maria~bionic-log
      测试环境mysql版本:10.1.43-MariaDB-0ubuntu0.18.04.1

可以看出数据库版本不一样。

字符集长度计算:

    utf8mb4 字符集是 1个字符=4个字节, ID_字节长度 = 255*4=1020字节
    utf8 字符集是 1个字符=3个字节, ID_字节长度 = 255*3= 765字节
    gbk字符集是 1个字符=2个字节, ID_字节长度 = 255*2= 510字节

可以看出utf-8 和 gbk 都是可以的。 所以当建表时设置utf-8字符集确实可以。 但是flowable的建表sql是在jar中的xml里,重新修改,编译源码太麻烦。

flowable的数据库是用户自己建的,所以在建库时设置数据的默认字符集

    CREATE database flowable DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

  重新启动项目,建表成功

 

  


 

Specified key was too long; max key length is 767 bytes

标签:highlight   specified   date   bsp   inno   data   字符集   测试环境   cat   

原文地址:https://www.cnblogs.com/zhangXingSheng/p/13304496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!