数据库的sql无法执行
design365 opened this issue · 4 comments
design365 commented
Error Code: 1709. Index column size too large. The maximum column size is 767 bytes.
innodb_large_prefix已经设置成了on也没用。
那个character表的hash字段为啥是需要255?如果是md5的话 ,32个字符就够了。
麻烦看下。谢谢。
godcong commented
创建database的时候选utf8mb4
CREATE schema fate
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
design365 commented
不行的,已经试过了,不是字符集问题 ,是索引的长度限制 ,按照utf8mb4 只能191个字符
godcong commented
可能你的表里面有脏数据,hash的长度只有64,你可以把hash的长度改成64。而且默认我这里也没有添加索引啊。
我试过
ALTER TABLE `fate`.`character`
ADD FULLTEXT INDEX `hash_index`(`hash`)
或者
ALTER TABLE `fate`.`character`
ADD INDEX `hash_index`(`hash`) USING BTREE
都是可以的。
你试试改一下长度会不会报错,如果正常是不会报错的:
ALTER TABLE `fate`.`character`
MODIFY COLUMN `hash` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL FIRST
还有如果你建表的时候不是按照utf8mb4建的话,字段的字符集和排序规则会是你创建database时的设定,这个长度确实是不够的。
design365 commented
改成64可以了,谢谢