在mysql中创建表错误。 1071错误

时间:2013-01-16 04:52:00

标签: mysql

大家都可以帮助我, 在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)
);

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

首先,您的数据库字符集很可能设置为utf8,因此您的255个字符最多可以被炸成765个字符;尽管接近,但这并不比767的强加限制更大,但是它会让你知道为什么你会达到这个极限。

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