当我尝试在我的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)
)
答案 0 :(得分:0)
为什么需要使用这么广阔的领域?即使是id
,您也使用了VARCHAR(255)
。
您正在尝试创建太宽的键/索引。
如果您只是降低食欲并使用合理的字段定义,例如id
的整数,以及其他小于255的字段,您应该立即使用它。
答案 1 :(得分:0)
我猜你正在使用UTF8字符集。您的ID列需要255 * 4个字节,即1020个字节,这对于MyISAM表来说太多了。