2014-08-29 157 views
0

我一直在研究MySQL並遇到錯誤#1452。MySQL錯誤#1452:無法添加或更新子行:外鍵約束失敗

下面是我的MySQL架構:

CREATE TABLE IF NOT EXISTS `eurobid`.`utente` (
    `username` VARCHAR(45) NOT NULL, 
    `nome` VARCHAR(45) NOT NULL, 
    `cognome` VARCHAR(45) NOT NULL, 
    `email` VARCHAR(45) NOT NULL, 
    `password` VARCHAR(45) NOT NULL, 
    `indirizzo` VARCHAR(45) NOT NULL, 
    `cap` INT NOT NULL, 
    `citta` VARCHAR(45) NOT NULL, 
    `stato` VARCHAR(45) NOT NULL, 
    `admin` TINYINT(1) NULL, 
    `feedback` INT NULL, 
    `sommafeedback` INT NULL, 
    PRIMARY KEY (`username`), 
    UNIQUE INDEX `Username_UNIQUE` (`username` ASC)) 
ENGINE = MyISAM; 


CREATE TABLE IF NOT EXISTS `eurobid`.`categorie` (
    `id_categoria` INT NOT NULL AUTO_INCREMENT, 
    `tipologia` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`id_categoria`)) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `eurobid`.`pagamento` (
    `id_pagamento` INT NOT NULL AUTO_INCREMENT, 
    `tipologia` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`id_pagamento`)) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `eurobid`.`spedizione` (
    `id_spedizione` INT NOT NULL AUTO_INCREMENT, 
    `tipo` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`id_spedizione`)) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `eurobid`.`asta` (
    `id_asta` INT NOT NULL AUTO_INCREMENT, 
    `titolo` VARCHAR(45) NOT NULL, 
    `descrizione` VARCHAR(500) NOT NULL, 
    `foto` VARCHAR(45) NULL DEFAULT './images/default.jpg', 
    `inizio_asta` DATETIME NOT NULL, 
    `fine_asta` DATETIME NOT NULL, 
    `prezzo_base` DECIMAL(5) NOT NULL, 
    `prezzo_riserva` DECIMAL(5) NULL, 
    `in_corso` TINYINT(1) NOT NULL DEFAULT 1, 
    `feedback` VARCHAR(250) NULL, 
    `vincitore` VARCHAR(45) NULL, 
    `id_venditore` VARCHAR(45) NOT NULL, 
    `id_categoria` INT NOT NULL, 
    `tipo_pagamento` INT NOT NULL, 
    `id_spedizione` INT NOT NULL, 
    PRIMARY KEY (`id_asta`), 
    INDEX `fk_Asta_Utente_idx` (`id_venditore` ASC), 
    INDEX `fk_Asta_Categorie1_idx` (`id_categoria` ASC), 
    INDEX `fk_Asta_Pagamento1_idx` (`tipo_pagamento` ASC), 
    INDEX `fk_Asta_spedizione1_idx` (`id_spedizione` ASC), 
    CONSTRAINT `fk_Asta_Utente` 
     FOREIGN KEY (`id_venditore`) 
     REFERENCES `eurobid`.`utente` (`username`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION, 
    CONSTRAINT `fk_Asta_Categorie1` 
     FOREIGN KEY (`id_categoria`) 
     REFERENCES `eurobid`.`categorie` (`id_categoria`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION, 
    CONSTRAINT `fk_Asta_Pagamento1` 
     FOREIGN KEY (`tipo_pagamento`) 
     REFERENCES `eurobid`.`pagamento` (`id_pagamento`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION, 
    CONSTRAINT `fk_Asta_spedizione1` 
     FOREIGN KEY (`id_spedizione`) 
     REFERENCES `eurobid`.`spedizione` (`id_spedizione`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `eurobid`.`offerta` (
    `id_offerta` INT NOT NULL, 
    `prezzo` DECIMAL(5) NOT NULL, 
    `data` TIMESTAMP NOT NULL, 
    `username` VARCHAR(45) NOT NULL, 
    `id_asta` INT NOT NULL, 
    PRIMARY KEY (`id_offerta`, `username`, `id_asta`), 
    INDEX `fk_offerta_Utente1_idx` (`username` ASC), 
    INDEX `fk_offerta_Asta1_idx` (`id_asta` ASC), 
    CONSTRAINT `fk_offerta_Utente1` 
     FOREIGN KEY (`username`) 
     REFERENCES `eurobid`.`Utente` (`username`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION, 
    CONSTRAINT `fk_offerta_Asta1` 
     FOREIGN KEY (`id_asta`) 
     REFERENCES `eurobid`.`Asta` (`id_asta`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

*我有表ASTAutente問題。

當我試圖在phpMyAdmin添加新行返回錯誤#1452,你可以看到如下:*

#1452 - Cannot add or update a child row: a foreign key constraint fails (`eurobid`.`asta`, CONSTRAINT `fk_Asta_Utente` FOREIGN KEY (`id_venditore`) REFERENCES `utente` (`username`) ON DELETE NO ACTION ON UPDATE NO ACTION) 

查詢我遇到的問題是:

INSERT INTO `eurobid`.`asta` (`id_asta`, `titolo`, `descrizione`, `foto`, `inizio_asta`, `fine_asta`, `prezzo_base`, `prezzo_riserva`, `in_corso`, `feedback`, `vincitore`, `id_venditore`, `id_categoria`, `id_pagamento`, `id_spedizione`) VALUES ('0', 'Aprilia SR 50', 'Bellissimo scooter', './images/default.jpg', '2014-08-29 01:00:00', '2014-08-31 01:00:00', '950', '970', '1', NULL, NULL, 'evin', '1', '2', '3') 

我哪裏出錯了?任何幫助將不勝感激

+0

我不明白爲什麼數據庫不能識別**用戶名**字段。正如你可以在這裏看到的:[http://i.imgur.com/R8KyN81.jpg](http://i.imgur.com/R8KyN81.jpg)用戶** evin **它正確地插入表中* * utente ** – Evinrude 2014-08-29 11:51:17

+0

看看這個;這裏還有更多的解決方案,這可能會給你更多的東西來檢查:http://stackoverflow.com/questions/1253459/mysql-error-1452-cannot-add-or-update-a-child-row- a-foreign-key-constraint-fa?rq = 1 – jbutler483 2014-08-29 11:56:26

回答

0

您正在創建一個名爲Asta的表,同時試圖插入asta。我不習慣MySQL,但我認爲它是區分大小寫的。

可能還有其他的拼寫錯誤,但這就是其中之一。 Typo's可能是原因。

+0

我試圖改變,但我得到了相同的結果 – Evinrude 2014-08-29 11:47:20

相關問題