Mysql #1022-Can';不写字;表中的重复键

Mysql #1022-Can';不写字;表中的重复键,mysql,Mysql,您好,我在mysql phpMyAdmin中创建表时遇到1022错误。 错误出现在最后一个表“usercoment”中: 解决方案编辑:好的,我已经有一个名为IdMovie的约束键,所以我重命名了它,它工作正常。 谢谢你们 以下是表格: CREATE TABLE IF NOT EXISTS `WhichMovie`.`UserComent` ( `IDComent` INT NOT NULL, `IDUser` INT NOT NULL, `IDMovie` INT NOT NULL

您好,我在mysql phpMyAdmin中创建表时遇到1022错误。 错误出现在最后一个表“usercoment”中:

解决方案编辑:好的,我已经有一个名为
IdMovie
的约束键,所以我重命名了它,它工作正常。 谢谢你们

以下是表格:

CREATE TABLE IF NOT EXISTS `WhichMovie`.`UserComent` (
  `IDComent` INT NOT NULL,
  `IDUser` INT NOT NULL,
  `IDMovie` INT NOT NULL,
  `date` TIMESTAMP NOT NULL,
  PRIMARY KEY (`IDComent`, `IDUser`, `IDMovie`, `date`),
  INDEX `idUser_idx` (`IDUser` ASC),
  INDEX `idMovie_idx` (`IDMovie` ASC),
  CONSTRAINT `IdComent`
    FOREIGN KEY (`IDComent`)
    REFERENCES `WhichMovie`.`Coment` (`idComent`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `IiUser`
    FOREIGN KEY (`IDUser`)
    REFERENCES `WhichMovie`.`User` (`idUser`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `IdMovie`
    FOREIGN KEY (`IDMovie`)
    REFERENCES `WhichMovie`.`Movie` (`idMovie`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `WhichMovie`.`Movie`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WhichMovie`.`Movie` (
  `idMovie` INT NOT NULL AUTO_INCREMENT,
  `Ttle` VARCHAR(45) NULL,
  `Year` INT NULL,
  `Country` VARCHAR(45) NULL,
  `Poster` BLOB NULL,
  `Rating` DECIMAL NULL,
  PRIMARY KEY (`idMovie`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `WhichMovie`.`User`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WhichMovie`.`User` (
  `idUser` INT NOT NULL AUTO_INCREMENT,
  `Username` VARCHAR(45) NOT NULL,
  `Email` VARCHAR(45) NOT NULL,
  `Country` VARCHAR(45) NULL,
  `Pass` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idUser`, `Username`, `Email`),
  UNIQUE INDEX `idUser_UNIQUE` (`idUser` ASC),
  UNIQUE INDEX `Email_UNIQUE` (`Email` ASC),
  UNIQUE INDEX `Username_UNIQUE` (`Username` ASC))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `WhichMovie`.`Coment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WhichMovie`.`Coment` (
  `idComent` INT NOT NULL AUTO_INCREMENT,
  `NameComent` VARCHAR(45) NULL,
  PRIMARY KEY (`idComent`),
  UNIQUE INDEX `idComent_UNIQUE` (`idComent` ASC))
ENGINE = InnoDB;

有人能看到它吗?

根据:不能在整个模型上复制外键约束名称。

根据:不能在整个模型上复制外键约束名称。

只要以不同的方式重命名约束名称,您的问题就解决了

例如:

 CONSTRAINT `IdComent_CONSTRAINT`
    FOREIGN KEY (`IDComent`)

现在您有了一个不同于外键的约束名称

只要以不同的方式重命名约束名称,您的问题就解决了

例如:

 CONSTRAINT `IdComent_CONSTRAINT`
    FOREIGN KEY (`IDComent`)

现在您有了一个不同于外键的约束名称

您使用的是哪个版本的MySQL

在MySQL 5.6.12的本地主机上,这段代码(与您的代码相同,但最后移动了UserComent的创建)运行良好:

-- -----------------------------------------------------
-- Table `WhichMovie`.`Movie`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WhichMovie`.`Movie` (
  `idMovie` INT NOT NULL AUTO_INCREMENT,
  `Ttle` VARCHAR(45) NULL,
  `Year` INT NULL,
  `Country` VARCHAR(45) NULL,
  `Poster` BLOB NULL,
  `Rating` DECIMAL NULL,
  PRIMARY KEY (`idMovie`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `WhichMovie`.`User`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WhichMovie`.`User` (
  `idUser` INT NOT NULL AUTO_INCREMENT,
  `Username` VARCHAR(45) NOT NULL,
  `Email` VARCHAR(45) NOT NULL,
  `Country` VARCHAR(45) NULL,
  `Pass` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idUser`, `Username`, `Email`),
  UNIQUE INDEX `idUser_UNIQUE` (`idUser` ASC),
  UNIQUE INDEX `Email_UNIQUE` (`Email` ASC),
  UNIQUE INDEX `Username_UNIQUE` (`Username` ASC))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `WhichMovie`.`Coment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WhichMovie`.`Coment` (
  `idComent` INT NOT NULL AUTO_INCREMENT,
  `NameComent` VARCHAR(45) NULL,
  PRIMARY KEY (`idComent`),
  UNIQUE INDEX `idComent_UNIQUE` (`idComent` ASC))
ENGINE = InnoDB;




CREATE TABLE IF NOT EXISTS `WhichMovie`.`UserComent` (
  `IDComent` INT NOT NULL,
  `IDUser` INT NOT NULL,
  `IDMovie` INT NOT NULL,
  `date` TIMESTAMP NOT NULL,
  PRIMARY KEY (`IDComent`, `IDUser`, `IDMovie`, `date`),
  INDEX `idUser_idx` (`IDUser` ASC),
  INDEX `idMovie_idx` (`IDMovie` ASC),
  CONSTRAINT `IdComent`
    FOREIGN KEY (`IDComent`)
    REFERENCES `WhichMovie`.`Coment` (`idComent`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `IiUser`
    FOREIGN KEY (`IDUser`)
    REFERENCES `WhichMovie`.`User` (`idUser`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `IdMovie`
    FOREIGN KEY (`IDMovie`)
    REFERENCES `WhichMovie`.`Movie` (`idMovie`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;
创建表时,不会发生错误


在5.6.15中,表格的创建也没有问题。在phpmyadmin designer的视图下方:

您使用的是什么版本的MySQL

在MySQL 5.6.12的本地主机上,这段代码(与您的代码相同,但最后移动了UserComent的创建)运行良好:

-- -----------------------------------------------------
-- Table `WhichMovie`.`Movie`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WhichMovie`.`Movie` (
  `idMovie` INT NOT NULL AUTO_INCREMENT,
  `Ttle` VARCHAR(45) NULL,
  `Year` INT NULL,
  `Country` VARCHAR(45) NULL,
  `Poster` BLOB NULL,
  `Rating` DECIMAL NULL,
  PRIMARY KEY (`idMovie`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `WhichMovie`.`User`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WhichMovie`.`User` (
  `idUser` INT NOT NULL AUTO_INCREMENT,
  `Username` VARCHAR(45) NOT NULL,
  `Email` VARCHAR(45) NOT NULL,
  `Country` VARCHAR(45) NULL,
  `Pass` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idUser`, `Username`, `Email`),
  UNIQUE INDEX `idUser_UNIQUE` (`idUser` ASC),
  UNIQUE INDEX `Email_UNIQUE` (`Email` ASC),
  UNIQUE INDEX `Username_UNIQUE` (`Username` ASC))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `WhichMovie`.`Coment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WhichMovie`.`Coment` (
  `idComent` INT NOT NULL AUTO_INCREMENT,
  `NameComent` VARCHAR(45) NULL,
  PRIMARY KEY (`idComent`),
  UNIQUE INDEX `idComent_UNIQUE` (`idComent` ASC))
ENGINE = InnoDB;




CREATE TABLE IF NOT EXISTS `WhichMovie`.`UserComent` (
  `IDComent` INT NOT NULL,
  `IDUser` INT NOT NULL,
  `IDMovie` INT NOT NULL,
  `date` TIMESTAMP NOT NULL,
  PRIMARY KEY (`IDComent`, `IDUser`, `IDMovie`, `date`),
  INDEX `idUser_idx` (`IDUser` ASC),
  INDEX `idMovie_idx` (`IDMovie` ASC),
  CONSTRAINT `IdComent`
    FOREIGN KEY (`IDComent`)
    REFERENCES `WhichMovie`.`Coment` (`idComent`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `IiUser`
    FOREIGN KEY (`IDUser`)
    REFERENCES `WhichMovie`.`User` (`idUser`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `IdMovie`
    FOREIGN KEY (`IDMovie`)
    REFERENCES `WhichMovie`.`Movie` (`idMovie`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;
创建表时,不会发生错误


在5.6.15中,表格的创建也没有问题。在phpmyadmin designer的视图下方:

需要查看引用的表定义。您还应该为我们提供使用UserComentIt引用的其他表结构。问题似乎不在于结构。我在创建表和插入数据方面没有问题。您是否100%确定插入数据时没有问题?重命名您的whichmovie数据库,创建空whichmovie数据库,然后像我的答案一样导入这些查询。您在创建表时启动这些查询时是否确实看到错误?需要查看引用的表定义。您还应该为我们提供其他使用UserComentIt引用的表结构。问题似乎不在于结构。我在创建表和插入数据方面没有问题。您是否100%确定插入数据时没有问题?重命名whichmovie数据库,创建空whichmovie数据库,然后像我的答案一样导入这些查询。在创建表时启动这些查询时,您真的看到错误了吗?