简体   繁体   中英

#1005 - Can't create table `agenceassurance`.`operation` (errno: 150 “Foreign key constraint is incorrectly formed”)

errno: 150 "Foreign key constraint is incorrectly formed")

DROP DATABASE IF EXISTS AgenceAssurance;
CREATE DATABASE IF NOT EXISTS AgenceAssurance;
USE AgenceAssurance;

CREATE TABLE Logininfo (
  idLogin    INT(3)  PRIMARY KEY  NOT NULL AUTO_INCREMENT,
  userName       VARCHAR(50) NOT NULL,
  pass       VARCHAR(50),
  usertype   VARCHAR(50)          DEFAULT NULL,
  GrantedKey VARCHAR(8)           DEFAULT NULL
)ENGINE = InnoDB;

CREATE TABLE Operation (
  idOpt    INT PRIMARY KEY  NOT NULL AUTO_INCREMENT,
  libelOpt TEXT,
  dateOpt  DATETIME DEFAULT now(),
  userName VARCHAR(50),
   CONSTRAINT fk_login FOREIGN KEY (userName) REFERENCES Logininfo (userName)
)ENGINE = InnoDB;

Error SQL query:

CREATE TABLE Operation (
  idOpt    INT PRIMARY KEY  NOT NULL AUTO_INCREMENT,
  libelOpt TEXT,
  dateOpt  DATETIME DEFAULT now(),
  userName VARCHAR(50),
  CONSTRAINT fk_login FOREIGN KEY (userName) REFERENCES Logininfo (userName)
)ENGINE = InnoDB

MySQL said:

1005 - Can't create table agenceassurance . operation (errno: 150 "Foreign key constraint is incorrectly formed") (Details…)

CONSTRAINT pk_Log主键(idLogin,用户名):尝试如下操作:CONSTRAINT pk_Log主键(用户名),因为:一次,两个带有PK的字段不能用作FK。

The field userName in Logininfo table must be UNIQUE. You can only have a foreign key referencing a unique field.

Just like this:

userName VARCHAR(50) NOT NULL UNIQUE

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM