创建数据库的 SQL 会抛出"MySQLSyntaxErrorException:指定的键太长;最大密钥长度为 767 字节'



当我尝试用以下语句创建数据库时

c.prepareStatement("CREATE TABLE IF NOT EXISTS `verify` (" +
"`id` INT NOT NULL AUTO_INCREMENT UNIQUE," +
"`uuid` VARCHAR(255) NOT NULL UNIQUE," +
"`ts` INT NOT NULL UNIQUE," +
"PRIMARY KEY (`id`)" +
");").execute();

我得到这个错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes

您希望uuidUNIQUE,但对于字符串列:

可以创建仅使用列的前导部分的

索引值,使用col_name(length(语法指定索引前缀长度

前缀支持和前缀长度(如果支持(是存储取决于发动机。例如,前缀最长可达767字节对于使用REDUNDANT或COMPACT行格式的InnoDB表。这个对于使用DYNAMIC或COMPRESSED行格式。对于MyISAM表,前缀长度限制为1000字节。

因此,您可以创建没有此索引的表,然后设置索引以获取列的子集:

ALTER TABLE `verify` ADD UNIQUE ( uuid(191) );

作为CCD_ 4。

相关内容

最新更新