0
  `CREATE TABLE IF NOT EXISTS `Odin`.`Usuario` (
  `CodUsuario` INT NOT NULL AUTO_INCREMENT,
  `CodTipoUsuario` INT NOT NULL,
  `CodConsultorTecnico` INT NULL,
  `CodProdutor` INT NULL,
  `Login` VARCHAR(255) CHARACTER SET 'utf8mb4' NOT NULL,
  `Senha` VARCHAR(32) CHARACTER SET 'utf8mb4' NOT NULL,
  `Ativo` TINYINT(1) NOT NULL,
  `MaiorDataRegistrada` DATETIME NOT NULL,
  `DataLimite` DATETIME NOT NULL DEFAULT '01/01/2014',
  `MaxFazendas` INT NOT NULL DEFAULT 0,
  `MaxFemeas` INT NOT NULL DEFAULT 0,
  `CodUserWeb` INT NOT NULL DEFAULT 0,
  `CodEstudante` INT NULL,
  `UltimoBackup` DATETIME NULL,
  PRIMARY KEY (`CodUsuario`),
  UNIQUE INDEX `UQ__Usuario__00000000000006D8` (`Login` ASC),
  CONSTRAINT `FK_Usu_ref_Est`
    FOREIGN KEY (`CodEstudante`)
    REFERENCES `Odin`.`Estudante` (`CodEstudante`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `Fk_Usuario_Ref_Consultor`
    FOREIGN KEY (`CodConsultorTecnico`)
    REFERENCES `Odin`.`ConsultorTecnico` (`CodConsultorTecnico`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `Fk_Usuario_Ref_Produtor`
    FOREIGN KEY (`CodProdutor`)
    REFERENCES `Odin`.`Produtor` (`CodProdutor`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `Fk_Usuario_Ref_TipoUsuario`
    FOREIGN KEY (`CodTipoUsuario`)
    REFERENCES `Odin`.`ConfTipoUsuario` (`CodTipoUsuario`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION) `

我尝试过诸如: ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 或 ENGINE=InnoDB DEFAULT CHARSET=utf16 COLLATE=utf8_unicode_ci;

或添加唯一

并仍然继续错误:

1071 - 指定的密钥太长;最大密钥长度为 767 字节

有人能帮我吗?谢谢

4

1 回答 1

1

您正在使用utf8mb4每个字符 1-4 个字节。

您选择了VARCHAR(255)- 255 个字符 * 4 个字节 = 1020。

尝试使用更少的字符。喜欢VARCHAR(191)

也看看innodb_large_prefix

于 2016-11-08T12:49:44.263 回答