我试图安装phpMyLibrary。在步骤3安装程序给我一个错误的SQL命令。错误如下:
SQL=Specified key was too long; max key length is 1000 bytes
我的代码是:
CREATE TABLE `#__patron` (
`uid` bigint(10) NOT NULL,
`gid` bigint(10) NOT NULL,
`barcode` bigint(10) NOT NULL,
`name` varchar(255) NOT NULL,
`firstname` varchar(255) NOT NULL,
`branch` varchar(255) NOT NULL,
`code` varchar(100) NOT NULL,
`type` varchar(100) NOT NULL,
`sup` varchar(255) NOT NULL,
`org` varchar(255) NOT NULL,
`dept` varchar(255) NOT NULL,
`add1` varchar(255) NOT NULL,
`add2` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL,
`state` varchar(255) NOT NULL,
`zip` varchar(255) NOT NULL,
`country` varchar(255) NOT NULL,
`phone` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`grade` varchar(255) NOT NULL,
`sex` varchar(255) NOT NULL,
`ethnic` varchar(255) NOT NULL,
`birthdate` date NOT NULL,
`graddate` date NOT NULL,
`parentinfo` varchar(255) NOT NULL,
`comment` varchar(255) NOT NULL,
`custfield1` varchar(255) NOT NULL,
`custfield2` varchar(255) NOT NULL,
`custfield3` varchar(255) NOT NULL,
`custfield4` varchar(255) NOT NULL,
UNIQUE KEY `uid` (`uid`),
UNIQUE KEY `barcode` (`barcode`),
KEY `name` (`name`,`code`,`type`)
) ENGINE=MyISAM;
我不知道指定哪个键太长帮助我修复此错误。
答案 0 :(得分:1)
您的错误来自key
中引用太多字节 - 您已经达到name
,code
和type
的密钥的1000字节限制:
KEY `name` (`name`,`code`,`type`)
该密钥包含3个varchar字段。每个varchar字段相当于其精度的3倍。这导致3*(255+100+100) = 1365 bytes
如果您将引擎从myisam
切换为innodb
,它就能正常工作。如果这不是一个选项,则需要删除key
或缩小其大小。
这是关于mysql中键的限制的好帖子:https://stackoverflow.com/a/3489331/1073631