#1005(错误编号:150“外键约束格式不正确”))

问题描述 投票:0回答:1

我试图在数据库上创建一个新表,但这不起作用。我不明白哪里出了错。

正确创建表:

CREATE TABLE tblCliente(

    idCliente INT NOT NULL auto_increment,
    indirizzo TEXT NOT NULL,
    ragSoc VARCHAR(55),
    piva VARCHAR(55),
    cf VARCHAR(55),
    nominativo VARCHAR(55),
    tel VARCHAR(55),
    mail VARCHAR(255),
    PRIMARY KEY(idCliente)
)Engine=InnoDB;


CREATE TABLE tblAgente(

    username VARCHAR(55) NOT NULL,
    password VARCHAR(55) NOT NULL,
    grado   varchar(55) NOT NULL,
    trainer VARCHAR(55),
    ufficio VARCHAR(55),
    PRIMARY KEY(username)
)Engine=InnoDB;

CREATE TABLE tblContratto(

    codCtr VARCHAR(55) NOT NULL,
    cliente INT NOT NULL,
    data DATE NOT NULL,
    partner VARCHAR(55),
    PRIMARY KEY(cliente,codCtr),
    FOREIGN KEY (cliente) REFERENCES tblCliente(idCliente)
        ON DELETE CASCADE
        ON UPDATE CASCADE

)Engine=InnoDB;

现在当我尝试在其中创建新表时不起作用:

CREATE TABLE tblPuntoFornitura(

   idFornitura INT NOT NULL auto_increment,
   agente VARCHAR(55) NOT NULL,
   contratto VARCHAR(55) NOT NULL,
   codice VARCHAR(55) NOT NULL,
   indirizzo VARCHAR(255) NOT NULL,
   consumi VARCHAR(55) NOT NULL,
   PRIMARY KEY(idFornitura,agente,contratto),
   FOREIGN KEY (agente) REFERENCES tblAgente(username)
       ON DELETE CASCADE
       ON UPDATE CASCADE,
    CONSTRAINT contratto FOREIGN KEY (contratto) REFERENCES tblContratto(codCtr)
       ON DELETE CASCADE
       ON UPDATE CASCADE


)Engine=InnoDB;

并且终端显示此消息:#1005 - Impossibile creare la tabella `db_empire`.`tblpuntofornitura` (errno: 150 "Foreign key constraint is incorrectly formed")错误是在最后一个外键中,但我无法修复。有人可以帮我吗?

mysql mysql-error-1005
1个回答
0
投票

在创建表“ tblPuntoFornitura”之前,执行以下SQL命令:

ALTER TABLE tblContratto ADD CONSTRAINT contratto_pk PRIMARY KEY (codCtr);
© www.soinside.com 2019 - 2024. All rights reserved.