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

Java 创建数据库的SQL抛出';MySQLSyntaxErrorException:指定的键太长;最大密钥长度为767字节';,java,mysql,sql,Java,Mysql,Sql,当我尝试使用以下语句创建数据库时 c.prepareStatement("CREATE TABLE IF NOT EXISTS `verify` (" + "`id` INT NOT NULL AUTO_INCREMENT UNIQUE," + "`uuid` VARCHAR(255) NOT NULL UNIQUE," +

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

            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:指定的密钥太长;最大键长度为767字节

您希望
uuid
是唯一的,但对于字符串列:

可以创建只使用列的前导部分的索引 值,使用col_name(length)语法指定索引前缀 长度

前缀支持和前缀长度(如果支持)是存储 取决于发动机。例如,前缀的长度可达767字节 对于使用冗余或紧凑行格式的InnoDB表。这个 对于使用 动态或压缩行格式。对于MyISAM表,前缀长度 限制为1000字节

因此,您可以在不使用此索引的情况下创建表,然后设置索引以获取列的子集:

ALTER TABLE `verify` ADD UNIQUE ( uuid(191) );
as
767/4~=191