大家都可以帮助我, 在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)
);
答案 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,并将其用于唯一键(顺便说一句,您应该使用哈希的二进制表示)。