天天看點

springboot 整合 flowable 啟動報錯問題描述原因分析:解決方案:

問題描述

springboot整合flowable時啟動報錯,資料庫為 mysql 5,按說不應該會報錯,看一下報錯資訊

springboot 整合 flowable 啟動報錯問題描述原因分析:解決方案:
 翻譯一下 就是建立這個Bean的時候報錯

再看下一個

springboot 整合 flowable 啟動報錯問題描述原因分析:解決方案:
這個意思就是 索引字段長度太長,超過了767bytes

 講道理 不應該啟動報錯的,啟動就是去建立flowable需要的表

原因分析:

我有兩台電腦,在一台電腦上能正常運作,通過排查發現兩台電腦的mysql版本不一樣,一個是5,一個是8,後來也想了一下5和8的預設存儲引擎也是不一樣的,5.5之前預設存儲引擎是MyISAM,5.5之後預設存儲引擎是Innodb

查了一下目前儲存電腦的mysql版本是 5.6,是以不是預設存儲引擎的問題

然後在網上看到一個大佬關于索引最大長度問題的解釋

MySQL對索引字段長度有限制

innodb引擎的每個索引列長度限制為767位元組(bytes),所有組成索引列的長度和不能大于3072位元組

myisam引擎的每個索引列長度限制為1000位元組,所有組成索引列的長度和不能大于1000位元組

varchar的最大長度是指字元長度,若資料庫字元集為utf-8,則一個字元占3個bytes。是以在utf-8字元集下,innodb引擎建立的單列索引長度不能超過255個字元

mysql版本不同而導緻的索引長度限制不同

在MySQL5.5版本,引入了innodb_large_prefix,用來禁用大型字首索引,以便與不支援大索引鍵字首的早期版本的InnoDB相容

開啟innodb_large_prefix可以使單索引的長度限制達到3072位元組(但是聯合索引總長度限制還是3072位元組),禁用時單索引的長度限制為767位元組

在MySQL5.5版本與MySQL5.6版本,innodb_large_prefix是預設關閉的,在MySQL5.7及以上版本則預設開啟

在MySQL8.0版本中,innodb_large_prefix已被移除

這就是我在自己機器(MySQL8.0)上可以建立1024字元(utf8字元集下表示3072位元組)長的索引,而在伺服器(MySQL5.5)上不行的原因

解決方案:

是以解決方案就顯而易見了,麻溜更新資料庫吧