Springboot中使用@Entiy注解自动生成表后爆Specified key was too long;

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

首先讲一下原因。数据库建立unique索引的时候计算key的长度是累加所有的index用到的字段的char 长度在按照字符长度进行累加,不能超过1000。
latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character

所以解决方式是从两个方向:
1. 数据库修改配制增大长度。
2. 修改表字段长度。

使用方法二进行介绍:

@Entity
public class Reader implements UserDetails {
    private static final long serialVersionUID =1L;
    @Id
    @Column(length = 20)
    private String username;
    @Column(length = 20)
    private String fullname;
    @Column(length = 20)
    private String password;
    ......

实现UserDetails后,仅使用@Id设置主键,而不可控制长度的化,就会出现上述错误。使用@Column(length = )来指定字符长度。

猜你喜欢

转载自blog.csdn.net/xl_1851252/article/details/81559670