SQL: 指定的密钥太长
SQL: Key Specified Is Too Long
我尝试安装 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;
我不知道指定的哪个键太长了,帮我解决这个错误。
您的错误是由于在 key
中引用了太多字节 - 您已达到 name
、code
和 [=14] 键的 1000 字节限制=]:
KEY `name` (`name`,`code`,`type`)
该键包含 3 个 varchar 字段。每个 varchar 字段相当于其精度的 3 倍。这导致 3*(255+100+100) = 1365 bytes
如果您将引擎从 myisam
切换到 innodb
,它将正常工作。如果那不是一个选项,您需要删除它 key
或减小它的大小。
post 关于 mysql 中键的限制有一个很好的 post:
我尝试安装 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;
我不知道指定的哪个键太长了,帮我解决这个错误。
您的错误是由于在 key
中引用了太多字节 - 您已达到 name
、code
和 [=14] 键的 1000 字节限制=]:
KEY `name` (`name`,`code`,`type`)
该键包含 3 个 varchar 字段。每个 varchar 字段相当于其精度的 3 倍。这导致 3*(255+100+100) = 1365 bytes
如果您将引擎从 myisam
切换到 innodb
,它将正常工作。如果那不是一个选项,您需要删除它 key
或减小它的大小。
post 关于 mysql 中键的限制有一个很好的 post: