今天在MySQL 5.6版本的数据库中修改InnoDB表字段长度时遇到了"ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes"错误,第一次遇到这个错误,遂花了点学习、研究过、总结这个问题。
我们先来创建一个测试表,构造这样的错误。
mysql> use MyDB;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> CREATE TABLE `TEST` (
-> `CODE_NAME` varchar(100) NOT NULL DEFAULT '',
-> `CODE_SEQ` smallint(6) NOT NULL DEFAULT '1',
-> `ACTIVE` char(1) DEFAULT 'Y',
-> `CODE_VALUE1` varchar(250) DEFAULT NULL,
-> PRIMARY KEY (`CODE_NAME`,`CODE_SEQ`),
-> KEY `IDX_GEN_CODE` (`CODE_NAME`,`CODE_VALUE1`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.02 sec)
mysql> ALTER TABLE TEST MODIFY CODE_VALUE1 VARCHAR(350);
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
mysql>