zoukankan      html  css  js  c++  java
  • Specified key was too long; max key length is 767 bytes

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

          在测试环境部署flowable时,程序创建flowable表时,出现了【Specified key was too long; max key length is 767 bytes】异常。 这个异常在开发环境是没有的,也就是说 跟mysql数据库版本也有关系。

    建表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 是不设置表的编码集,那也就是说他使用的是数据库的编码集。

    flowable的数据库是用户自己建的,所以在建库时设置数据的默认字符集,这样在建表时,就会使用默认的数据库字符集

        CREATE database flowable DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    

      重新启动项目,建表成功

      

    
    
    
  • 相关阅读:
    20210110-正则表达式
    20210105
    C# Expression 树转化为SQL语句(一)
    5000行js db
    Keras智能
    nginx 设置多个tcp IP代理 socket 转发
    FTP连接时出现“227 Entering Passive Mode” 的解决方法
    windows nginx TCP代理 负载均衡
    nginx 代理ftp
    Intellij IDEA添加项目依赖
  • 原文地址:https://www.cnblogs.com/zhangXingSheng/p/13304496.html
Copyright © 2011-2022 走看看