SQL:指定的密钥太长

时间:2016-03-05 05:19:52

标签: mysql sql key

我试图安装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;

我不知道指定哪个键太长帮助我修复此错误。

1 个答案:

答案 0 :(得分:1)

您的错误来自key中引用太多字节 - 您已经达到namecodetype的密钥的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