今天在MySQL中建立表的时候,报了一个错误,说是key太长了,超戳了767个字节
但是建表语句并有超过指定的长度啊。
CREATE TABLE XXL_JOB_QRTZ_JOB_DETAILS
(
SCHED_NAME VARCHAR(120) NOT NULL,
JOB_NAME VARCHAR(200) NOT NULL,
JOB_GROUP VARCHAR(200) NOT NULL,
DESCRIPTION VARCHAR(250) NULL,
JOB_CLASS_NAME VARCHAR(250) NOT NULL,
IS_DURABLE VARCHAR(1) NOT NULL,
IS_NONCONCURRENT VARCHAR(1) NOT NULL,
IS_UPDATE_DATA VARCHAR(1) NOT NULL,
REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
);
是这样的每一个数据库表的编码格式不一样,每个字符占用的字节数是不一样的,
utf8mb4> utf-8> iso-8859-1
结果查看了数据库表的编码,果不其然是utf8mb4编码的格式的。
也就是说
UTF8 是 767/3 = 255 个字符, UTF8mb4 4个字节每字符 所以是 767/4 = 191 个字符
所以之前会说是超过了指定长度