老板说小明啊去搞几张表到数据,小明心说这么简单秒秒钟搞定剩下时间摸鱼。
结果:
CREATE TABLE oauth_client_token (
token_id VARCHAR(256),
token LONGVARBINARY,
authentication_id VARCHAR(256) PRIMARY KEY,
user_name VARCHAR(256),
client_id VARCHAR(256)
);
Specified key was too long; max key length is 767 bytes
1.使用的字符集为(utf8mb4),这个指每个字符最大的字节数为4,所以很明显 4*255 > 767 所以就报上述错了。
2.解决:
方法一:
改变varchar的字符数,我改成了64就可以了 varchar(64)
方法二:
启用innodb_large_prefix,那么限制值会增加到3072,开启如下:
mysql> set global innodb_file_format = BARRACUDA;
Query OK, 0 rows affected (0.00 sec)
mysql> set global innodb_large_prefix = ON;
Query OK, 0 rows affected (0.00 sec)