-1

大家好,有人可以帮助我,在mysql中创建表时我收到以下错误

MySQL 错误 1071:指定的键太长;最大密钥长度为 767 字节

我的表定义如下。

CREATE TABLE oauth_consumer (id char(36)  NOT NULL ,
  name varchar(255)  NULL ,
  date_entered datetime  NULL ,
  date_modified datetime  NULL ,
  modified_user_id char(36)  NULL ,
  created_by char(36)  NULL ,
  description text  NULL ,
  deleted bool  DEFAULT '0' NULL ,
  assigned_user_id char(36)  NULL ,
  c_key varchar(255)  NULL ,
  c_secret varchar(255)  NULL, 
  PRIMARY KEY (id),
  UNIQUE ckey (c_key)
);
4

2 回答 2

0

您的查询没有问题。可能是您正在运行旧版本的 MySql。使用新版本。如果您使用的是新版本,请尝试使用以下查询来创建表

CREATE TABLE `oauth_consumer` (
    `id` CHAR(36) NOT NULL,
    `name` VARCHAR(255) NULL DEFAULT NULL,
    `date_entered` DATETIME NULL DEFAULT NULL,
    `date_modified` DATETIME NULL DEFAULT NULL,
    `modified_user_id` CHAR(36) NULL DEFAULT NULL,
    `created_by` CHAR(36) NULL DEFAULT NULL,
    `description` TEXT NULL,
    `deleted` TINYINT(1) NULL DEFAULT '0',
    `assigned_user_id` CHAR(36) NULL DEFAULT NULL,
    `c_key` VARCHAR(255) NULL DEFAULT NULL,
    `c_secret` VARCHAR(255) NULL DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE INDEX `ckey` (`c_key`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
于 2013-01-16T05:00:03.940 回答
0

首先,您的数据库字符集很可能设置为 utf8,因此您的 255 个字符被炸毁为 765 个字符;虽然很接近,但并不大于 767 的强制限制,但它可以让您了解为什么您仍然会达到该限制。

无论如何,不​​建议使用这么宽的键;您可以计算该值的 md5 或 sha1 并将其用作唯一键(顺便说一句,您应该使用哈希的二进制表示)。

于 2013-01-16T07:24:02.413 回答