标签:
1.问题描述:
在执行
create table goodsAndProps ( goodsId varchar(128) not null, propsId varchar(128) not null, propsValue varchar(128) not null, primary key (goodsId, propsId, propsValue) );
时候发生的,三个字段做主键占用的长度已经超出了1000的限制((200 + 200 +200) * 2 = 1200 > 1000),如果是两个字段做主键就不会有问题。
2.解决方案:
需要使用INNODB,新一点的mysql版本都是支持INNODB数据引擎的,不需要特别的开启。特别是在5.5版本以后,默认就是InnoDB。这里发生问题就是我们的mysql版本有点老了,是5.1.47的版本,
[root@localhost etc]# mysql --version mysql Ver 14.14 Distrib 5.1.47, for redhat-linux-gnu (x86_64) using readline 5.1
因此需要在 /etc/my.cnf 文件中的 [mysqld] 下面加入default-storage-engine=INNODB 一句,保存。
修改完毕的my.cnf如下,
[root@localhost etc]# cat my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql default-storage-engine=INNODB # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
重启mysql即可,不再会出现描述的问题。
关于“mysql specified key was too long”解决方法
标签:
原文地址:http://my.oschina.net/u/555061/blog/522051