老板说小明啊去搞几张表到数据,小明心说这么简单秒秒钟搞定剩下时间摸鱼。
结果:
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)