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 中引用了太多字节 - 您已达到 namecode 和 [=14] 键的 1000 字节限制=]:

KEY `name` (`name`,`code`,`type`)

该键包含 3 个 varchar 字段。每个 varchar 字段相当于其精度的 3 倍。这导致 3*(255+100+100) = 1365 bytes

如果您将引擎从 myisam 切换到 innodb,它将正常工作。如果那不是一个选项,您需要删除它 key 或减小它的大小。

post 关于 mysql 中键的限制有一个很好的 post: