【问题标题】:MySQL error #1452: Cannot add or update a child row: a foreign key constraint fails [duplicate]MySQL错误#1452:无法添加或更新子行:外键约束失败[重复]
【发布时间】:2014-10-23 10:07:21
【问题描述】:

我一直在研究 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;

*我对 astautetente 表有疑问。

当我尝试在 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')

我哪里做错了?任何帮助将不胜感激

【问题讨论】:

标签: mysql sql database


【解决方案1】:

您正在创建一个名为Asta 的表,同时尝试插入asta。我不习惯 MySQL,但我认为它区分大小写。

可能还有其他错别字,但无论如何,这是其中之一。错字可能是原因。

【讨论】:

  • 我试图改变,但我得到了相同的结果
猜你喜欢
  • 1970-01-01
  • 2015-02-04
  • 2013-06-11
  • 2014-01-06
  • 2017-03-06
  • 2014-05-10
  • 2021-12-28
  • 1970-01-01
  • 2019-03-29
相关资源
最近更新 更多