当我尝试用以下语句创建数据库时
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
您希望uuid
是UNIQUE
,但对于字符串列:
索引值,使用col_name(length(语法指定索引前缀长度
和
前缀支持和前缀长度(如果支持(是存储取决于发动机。例如,前缀最长可达767字节对于使用REDUNDANT或COMPACT行格式的InnoDB表。这个对于使用DYNAMIC或COMPRESSED行格式。对于MyISAM表,前缀长度限制为1000字节。
因此,您可以创建没有此索引的表,然后设置索引以获取列的子集:
ALTER TABLE `verify` ADD UNIQUE ( uuid(191) );
作为CCD_ 4。