无法在mysql中创建表

时间:2013-01-14 09:21:04

标签: mysql

当我尝试在我的sql中创建下表时,我收到一条错误说明

ERROR 1071(42000):指定密钥太长;最大密钥长度为767字节

CREATE TABLE fields_meta_data 
(id varchar(255)  NOT NULL ,
 name varchar(255)  NULL ,
 vname varchar(255)  NULL ,
 comments varchar(255)  NULL ,
 help varchar(255)  NULL ,
 custom_module varchar(255)  NULL ,
 type varchar(255)  NULL ,
 len int(11)  NULL ,
 required bool  DEFAULT '0' NULL ,
 default_value varchar(255)  NULL ,
 date_modified datetime  NULL ,
 deleted bool  DEFAULT '0' NULL ,
 audited bool  DEFAULT '0' NULL ,
 massupdate bool  DEFAULT '0' NULL ,
 duplicate_merge smallint  DEFAULT '0' NULL ,
 reportable bool  DEFAULT '1' NULL ,
 importable varchar(255)  NULL ,
 ext1 varchar(255)  NULL ,
 ext2 varchar(255)  NULL ,
 ext3 varchar(255)  NULL ,
 ext4 text  NULL  , 
 PRIMARY KEY (id),   
 KEY idx_meta_id_del (id, deleted),   
 KEY idx_meta_cm_del (custom_module, deleted)
 )

2 个答案:

答案 0 :(得分:0)

为什么需要使用这么广阔的领域?即使是id,您也使用了VARCHAR(255)

您正在尝试创建太宽的键/索引。

如果您只是降低食欲并使用合理的字段定义,例如id的整数,以及其他小于255的字段,您应该立即使用它。

答案 1 :(得分:0)

我猜你正在使用UTF8字符集。您的ID列需要255 * 4个字节,即1020个字节,这对于MyISAM表来说太多了。