標籤:
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 --versionmysql 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/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqldefault-storage-engine=INNODB# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
重啟mysql即可,不再會出現描述的問題。
關於“mysql specified key was too long”解決方案