sql >> Database teknologi >  >> RDS >> Mysql

#1071 - Den angivne nøgle var for lang; max nøglelængde er 767 bytes

Jeg har lige lært en løsning... Få 5.5.14 eller 5.6.3 (eller nyere), lav de SET angivet her, og brug DYNAMIC eller COMPRESSED:

SET GLOBAL innodb_file_per_table = ON,
           innodb_file_format = Barracuda,
           innodb_large_prefix = ON;
CREATE TABLE so29676724 (
  `id` INT NOT NULL AUTO_INCREMENT,
  `hashtag` VARCHAR(255) NOT NULL COMMENT 'hashtag must be unique. Must be saved without #',
   PRIMARY KEY (`id`),
  UNIQUE INDEX `hashtags_hashtag` (`hashtag` ASC)
)
ENGINE = InnoDB
DEFAULT CHARACTER SET  utf8mb4
ROW_FORMAT = COMPRESSED;

SHOW CREATE TABLE so29676724\G

mysql> CREATE TABLE so29676724 (
    ->   `id` INT NOT NULL AUTO_INCREMENT,
    ->   `hashtag` VARCHAR(255) NOT NULL COMMENT 'hashtag must be unique. Must be saved without #',
    ->    PRIMARY KEY (`id`),
    ->   UNIQUE INDEX `hashtags_hashtag` (`hashtag` ASC)
    -> )
    -> ENGINE = InnoDB
    -> DEFAULT CHARACTER SET  utf8mb4
    -> ROW_FORMAT = COMPRESSED;
Query OK, 0 rows affected (0.09 sec)


  1. SQL Server-triggere - rækkefølge for udførelse

  2. MyISAM- og InnoDB-tabeller i én database

  3. Venstre Deltag i en enkelt tilfældig optagelse MySQL

  4. Få medarbejdere, der var aktive i et bestemt datointerval