mysql key too long_关于“mysql specified key was too long”解决方法

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的版本,

[[email protected] 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如下,

[[email protected] 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即可,不再会出现描述的问题。

原文:http://my.oschina.net/u/555061/blog/522051

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值