错误 "Cannot add foreign key constraint"

Error "Cannot add foreign key constraint"

我和这里的其他人一样"Cannot add foreign key constraint"。

tableclient_partners包含用户之间的关系。创建 client_partners.

时出现错误

我检查过 users.idclient_partners.clientid 的类型相同client_partners.partnerid: INT UNSIGNED NOT NULL.

配置选项为:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

用户table定义:

-- -----------------------------------------------------
-- Table `users`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `users` ;

CREATE TABLE IF NOT EXISTS `users` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL,
  `password` VARCHAR(200) NOT NULL,
  `salt` VARCHAR(100) NULL,
  `firstname` VARCHAR(50) NOT NULL,
  `lastname` VARCHAR(50) NOT NULL,
  `email` VARCHAR(50) NOT NULL,
  `role` VARCHAR(10) NOT NULL DEFAULT 'supplier',
  `destination` VARCHAR(10) NULL,
  `supplierId` INT UNSIGNED NULL,
  `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `username_UNIQUE` (`username` ASC),
  INDEX `fk_users_suppliers_idx` (`supplierId` ASC),
  INDEX `fk_users_roles_idx` (`role` ASC),
  INDEX `fk_users_destinations1_idx` (`destination` ASC),
  CONSTRAINT `fk_users_suppliers`
    FOREIGN KEY (`supplierId`)
    REFERENCES `suppliers` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_users_roles`
    FOREIGN KEY (`role`)
    REFERENCES `roles` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_users_destinations1`
    FOREIGN KEY (`destination`)
    REFERENCES `destinations` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

Client_partners table 定义:

-- -----------------------------------------------------
-- Table `client_partners`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `client_partners` ;

CREATE TABLE IF NOT EXISTS `client_partners` (
  `clientid` INT UNSIGNED NOT NULL,
  `partnerid` INT UNSIGNED NOT NULL,
  PRIMARY KEY (`clientid`, `partnerid`),
  CONSTRAINT `fk_client_partners_1`
    FOREIGN KEY (`clientid` , `partnerid`)
    REFERENCES `users` (`id` , `id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

数据类型(自增除外)相同。首先创建引用 table(用户)。我错过了什么?

CONSTRAINT `fk_client_partners_1`    
FOREIGN KEY (`clientid` , `partnerid`)
REFERENCES `users` (`id` , `id`)

这里你引用了 table usersid 两次..这是不可能的。尝试删除一个并创建

如果您想引用另一个外键,您需要使用另一个名称来创建它。