-2

当我尝试在我的 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)
 )
4

2 回答 2

0

为什么需要使用如此广泛的领域?即使对于id你已经使用过的VARCHAR(255).

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

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

于 2013-01-14T09:28:48.973 回答
0

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

于 2013-01-14T09:30:35.583 回答