操作已完成但有错误

时间:2016-01-23 12:59:59

标签: mysql sql workbench

操作已完成但出现错误,当我转发工程师时出现此错误: 这与独特的钥匙有关吗?或不?由于此错误,它会设计一些表,而其他表不会使用数据创建。

Executing SQL script in server
ERROR: Error 1062: Duplicate entry '1' for key 'PRIMARY'
SQL Code:
        INSERT INTO `mydb`.`Team` (`idTeam`, `Naam`, `Stad`) VALUES (01, 'AZ', 'Alkmaar')

SQL script execution finished: statements: 21 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch  

这是我工程师的代码。

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';

    -- -----------------------------------------------------
    -- Schema mydb
    -- -----------------------------------------------------
    CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
    USE `mydb` ;

    -- -----------------------------------------------------
    -- Table `mydb`.`Team`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Team` (
      `idTeam` INT NOT NULL,
      `Naam` VARCHAR(45) NULL,
      `Stad` VARCHAR(45) NULL,
      PRIMARY KEY (`idTeam`))
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Persoon`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Persoon` (
      `idPersoon` INT NOT NULL,
      `Achternaam` VARCHAR(45) NULL,
      `Voornaam` VARCHAR(45) NULL,
      `Geboortedatum` DATE NULL,
      PRIMARY KEY (`idPersoon`))
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Scheidsrechter`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Scheidsrechter` (
      `idScheids` INT NOT NULL,
      PRIMARY KEY (`idScheids`),
      CONSTRAINT `fk_Scheidsrechter_Persoon1`
        FOREIGN KEY (`idScheids`)
        REFERENCES `mydb`.`Persoon` (`idPersoon`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Wedstrijd`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Wedstrijd` (
      `idWedstrijd` INT NOT NULL,
      `Scheidsrechter_idScheids` INT NOT NULL,
      `Grensrechter1` INT NULL,
      `Grensrechter2` INT NULL,
      `Team1` INT NULL,
      `Team2` INT NULL,
      `ScoreTeam1` INT NULL,
      `ScoreTeam2` INT NULL,
      PRIMARY KEY (`idWedstrijd`),
      INDEX `fk_Wedstrijd_Scheidsrechter1_idx` (`Scheidsrechter_idScheids` ASC),
      INDEX `fk_Wedstrijd_Scheidsrechter2_idx` (`Grensrechter1` ASC),
      INDEX `fk_Wedstrijd_Scheidsrechter3_idx` (`Grensrechter2` ASC),
      INDEX `fk_Wedstrijd_Team1_idx` (`Team1` ASC),
      INDEX `fk_Wedstrijd_Team2_idx` (`Team2` ASC),
      CONSTRAINT `fk_Wedstrijd_Scheidsrechter1`
        FOREIGN KEY (`Scheidsrechter_idScheids`)
        REFERENCES `mydb`.`Scheidsrechter` (`idScheids`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Wedstrijd_Scheidsrechter2`
        FOREIGN KEY (`Grensrechter1`)
        REFERENCES `mydb`.`Scheidsrechter` (`idScheids`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Wedstrijd_Scheidsrechter3`
        FOREIGN KEY (`Grensrechter2`)
        REFERENCES `mydb`.`Scheidsrechter` (`idScheids`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Wedstrijd_Team1`
        FOREIGN KEY (`Team1`)
        REFERENCES `mydb`.`Team` (`idTeam`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Wedstrijd_Team2`
        FOREIGN KEY (`Team2`)
        REFERENCES `mydb`.`Team` (`idTeam`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Locatie`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Locatie` (
      `idLocatie` INT NOT NULL AUTO_INCREMENT,
      `Naam` VARCHAR(45) NULL,
      `Stad` VARCHAR(45) NULL,
      `Wedstrijd_idWedstrijd` INT NOT NULL,
      PRIMARY KEY (`idLocatie`, `Wedstrijd_idWedstrijd`),
      INDEX `fk_Locatie_Wedstrijd1_idx` (`Wedstrijd_idWedstrijd` ASC),
      CONSTRAINT `fk_Locatie_Wedstrijd1`
        FOREIGN KEY (`Wedstrijd_idWedstrijd`)
        REFERENCES `mydb`.`Wedstrijd` (`idWedstrijd`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Koppel Team & Persoon`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Koppel Team & Persoon` (
      `ID` INT NOT NULL,
      `Persoon_idPersoon` INT NOT NULL,
      `Team_idTeam` INT NOT NULL,
      INDEX `fk_Koppel Team & Persoon_Persoon_idx` (`Persoon_idPersoon` ASC),
      INDEX `fk_Koppel Team & Persoon_Team1_idx` (`Team_idTeam` ASC),
      PRIMARY KEY (`ID`),
      CONSTRAINT `fk_Koppel Team & Persoon_Persoon`
        FOREIGN KEY (`Persoon_idPersoon`)
        REFERENCES `mydb`.`Persoon` (`idPersoon`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Koppel Team & Persoon_Team1`
        FOREIGN KEY (`Team_idTeam`)
        REFERENCES `mydb`.`Team` (`idTeam`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Speler`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Speler` (
      `idSpeler` INT NOT NULL,
      `Positie` VARCHAR(45) NULL,
      `Rugnummer` VARCHAR(2) NULL,
      `Team_idTeam` INT NOT NULL,
      PRIMARY KEY (`idSpeler`),
      INDEX `fk_Speler_Team1_idx` (`Team_idTeam` ASC),
      CONSTRAINT `fk_Speler_Team1`
        FOREIGN KEY (`Team_idTeam`)
        REFERENCES `mydb`.`Team` (`idTeam`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Speler_Persoon1`
        FOREIGN KEY (`idSpeler`)
        REFERENCES `mydb`.`Persoon` (`idPersoon`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Coach`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Coach` (
      `idCoach` INT NOT NULL AUTO_INCREMENT,
      `Team_idTeam` INT NOT NULL,
      PRIMARY KEY (`idCoach`),
      INDEX `fk_Coach_Team1_idx` (`Team_idTeam` ASC),
      CONSTRAINT `fk_Coach_Team1`
        FOREIGN KEY (`Team_idTeam`)
        REFERENCES `mydb`.`Team` (`idTeam`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Coach_Persoon1`
        FOREIGN KEY (`idCoach`)
        REFERENCES `mydb`.`Persoon` (`idPersoon`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Grensrechter`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Grensrechter` (
      `idGrensrechter` INT NOT NULL,
      `Achternaam` VARCHAR(45) NULL,
      `Voornaam` VARCHAR(45) NULL,
      PRIMARY KEY (`idGrensrechter`))
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Team_speelt_Wedstrijd`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Team_speelt_Wedstrijd` (
      `Team_idTeam` INT NOT NULL,
      `Wedstrijd_idWedstrijd` INT NOT NULL,
      PRIMARY KEY (`Team_idTeam`, `Wedstrijd_idWedstrijd`),
      INDEX `fk_Team_has_Wedstrijd_Wedstrijd1_idx` (`Wedstrijd_idWedstrijd` ASC),
      INDEX `fk_Team_has_Wedstrijd_Team1_idx` (`Team_idTeam` ASC),
      CONSTRAINT `fk_Team_has_Wedstrijd_Team1`
        FOREIGN KEY (`Team_idTeam`)
        REFERENCES `mydb`.`Team` (`idTeam`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Team_has_Wedstrijd_Wedstrijd1`
        FOREIGN KEY (`Wedstrijd_idWedstrijd`)
        REFERENCES `mydb`.`Wedstrijd` (`idWedstrijd`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `mydb`.`Wedstrijd_word_gespeeld_op_Locatie`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Wedstrijd_word_gespeeld_op_Locatie` (
      `Wedstrijd_idWedstrijd` INT NOT NULL,
      `Locatie_idLocatie` INT NOT NULL,
      PRIMARY KEY (`Wedstrijd_idWedstrijd`, `Locatie_idLocatie`),
      INDEX `fk_Wedstrijd_has_Locatie_Locatie1_idx` (`Locatie_idLocatie` ASC),
      INDEX `fk_Wedstrijd_has_Locatie_Wedstrijd1_idx` (`Wedstrijd_idWedstrijd` ASC),
      CONSTRAINT `fk_Wedstrijd_has_Locatie_Wedstrijd1`
        FOREIGN KEY (`Wedstrijd_idWedstrijd`)
        REFERENCES `mydb`.`Wedstrijd` (`idWedstrijd`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Wedstrijd_has_Locatie_Locatie1`
        FOREIGN KEY (`Locatie_idLocatie`)
        REFERENCES `mydb`.`Locatie` (`idLocatie`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    SET SQL_MODE=@OLD_SQL_MODE;
    SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
    SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

    -- -----------------------------------------------------
    -- Data for table `mydb`.`Team`
    -- -----------------------------------------------------
    START TRANSACTION;
    USE `mydb`;
    INSERT INTO `mydb`.`Team` (`idTeam`, `Naam`, `Stad`) VALUES (01, 'AZ', 'Alkmaar');
    INSERT INTO `mydb`.`Team` (`idTeam`, `Naam`, `Stad`) VALUES (02, 'AJAX', 'Amsterdam');
    INSERT INTO `mydb`.`Team` (`idTeam`, `Naam`, `Stad`) VALUES (03, 'Ado Den Haag', 'Den Haag');
    INSERT INTO `mydb`.`Team` (`idTeam`, `Naam`, `Stad`) VALUES (04, 'Feyenoord', 'Rotterdam');

    COMMIT;


    -- -----------------------------------------------------
    -- Data for table `mydb`.`Persoon`
    -- -----------------------------------------------------
    START TRANSACTION;
    USE `mydb`;
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (01, 'Klop', 'Hans', '1992-12-08');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (02, 'Bennen', 'Viktor', '1993-09-30');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (03, 'Naalt', 'Klaas', '1990-01-02');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (04, 'Strepp', 'Jurgen', '1991-02-21');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (91, 'Brul', 'Ada', '1970-04-23');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (92, 'Goos', 'Silvester', '1986-04-15');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (93, 'Keizer', 'Jan', '1976-12-09');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (94, 'Leips', 'Omid', '1980-06-12');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (50, 'Walle', 'David', '1978-04-04');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (51, 'Cum', 'Frank', '1977-03-12');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (101, 'van den Brom', 'John', '1968-05-30');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (102, 'de Boer', 'Frank', '1972-06-08');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (103, 'Fraser', 'Henk', '1969-07-10');
    INSERT INTO `mydb`.`Persoon` (`idPersoon`, `Achternaam`, `Voornaam`, `Geboortedatum`) VALUES (104, 'Bronckhorst', 'Giovanni', '1970-08-16');

    COMMIT;


    -- -----------------------------------------------------
    -- Data for table `mydb`.`Scheidsrechter`
    -- -----------------------------------------------------
    START TRANSACTION;
    USE `mydb`;
    INSERT INTO `mydb`.`Scheidsrechter` (`idScheids`) VALUES (91);
    INSERT INTO `mydb`.`Scheidsrechter` (`idScheids`) VALUES (92);
    INSERT INTO `mydb`.`Scheidsrechter` (`idScheids`) VALUES (93);
    INSERT INTO `mydb`.`Scheidsrechter` (`idScheids`) VALUES (94);

    COMMIT;


    -- -----------------------------------------------------
    -- Data for table `mydb`.`Wedstrijd`
    -- -----------------------------------------------------
    START TRANSACTION;
    USE `mydb`;
    INSERT INTO `mydb`.`Wedstrijd` (`idWedstrijd`, `Scheidsrechter_idScheids`, `Grensrechter1`, `Grensrechter2`, `Team1`, `Team2`, `ScoreTeam1`, `ScoreTeam2`) VALUES (1, 50, 91, 92, 01, 02, 2, 1);
    INSERT INTO `mydb`.`Wedstrijd` (`idWedstrijd`, `Scheidsrechter_idScheids`, `Grensrechter1`, `Grensrechter2`, `Team1`, `Team2`, `ScoreTeam1`, `ScoreTeam2`) VALUES (2, 51, 94, 93, 03, 04, 1, 3);

    COMMIT;


    -- -----------------------------------------------------
    -- Data for table `mydb`.`Locatie`
    -- -----------------------------------------------------
    START TRANSACTION;
    USE `mydb`;
    INSERT INTO `mydb`.`Locatie` (`idLocatie`, `Naam`, `Stad`, `Wedstrijd_idWedstrijd`) VALUES (1, 'AFAS Stadion', 'Alkmaar', 1);
    INSERT INTO `mydb`.`Locatie` (`idLocatie`, `Naam`, `Stad`, `Wedstrijd_idWedstrijd`) VALUES (2, 'Arena', 'Amsterdam', 2);
    INSERT INTO `mydb`.`Locatie` (`idLocatie`, `Naam`, `Stad`, `Wedstrijd_idWedstrijd`) VALUES (3, 'Kyocera Stadion', 'Den Haag', 3);
    INSERT INTO `mydb`.`Locatie` (`idLocatie`, `Naam`, `Stad`, `Wedstrijd_idWedstrijd`) VALUES (4, 'De Kuip', 'Rotterdam', 4);

    COMMIT;


    -- -----------------------------------------------------
    -- Data for table `mydb`.`Speler`
    -- -----------------------------------------------------
    START TRANSACTION;
    USE `mydb`;
    INSERT INTO `mydb`.`Speler` (`idSpeler`, `Positie`, `Rugnummer`, `Team_idTeam`) VALUES (01, 'Aanvaller', '9', 01);
    INSERT INTO `mydb`.`Speler` (`idSpeler`, `Positie`, `Rugnummer`, `Team_idTeam`) VALUES (02, 'Aanvaller', '19', 01);
    INSERT INTO `mydb`.`Speler` (`idSpeler`, `Positie`, `Rugnummer`, `Team_idTeam`) VALUES (03, 'Aanvaller', '21', 01);
    INSERT INTO `mydb`.`Speler` (`idSpeler`, `Positie`, `Rugnummer`, `Team_idTeam`) VALUES (04, 'Middenvelder', '4', 01);

    COMMIT;


    -- -----------------------------------------------------
    -- Data for table `mydb`.`Coach`
    -- -----------------------------------------------------
    START TRANSACTION;
    USE `mydb`;
    INSERT INTO `mydb`.`Coach` (`idCoach`, `Team_idTeam`) VALUES (101, 01);
    INSERT INTO `mydb`.`Coach` (`idCoach`, `Team_idTeam`) VALUES (102, 02);
    INSERT INTO `mydb`.`Coach` (`idCoach`, `Team_idTeam`) VALUES (103, 03);
    INSERT INTO `mydb`.`Coach` (`idCoach`, `Team_idTeam`) VALUES (104, 04);

    COMMIT;

2 个答案:

答案 0 :(得分:1)

因为idTeam是您的主键,不能两次具有相同的值。您尝试添加多行,其中1作为主键的值。这就是给你错误的原因。

您可以使用AUTO_INCREMENT自动增加主键。

答案 1 :(得分:1)

通常,当整数列声明为主键时,使用auto_increment

CREATE TABLE IF NOT EXISTS `mydb`.`Team` (
  `idTeam` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `Naam` VARCHAR(45) NULL,
  `Stad` VARCHAR(45) NULL
);

然后,当您插入数据时,通常只需将列留出:

INSERT INTO `mydb`.`Team`(`Naam`, `Stad`)
    VALUES ('AZ', 'Alkmaar');

自动分配值。

您的脚本可能出错的一个原因是因为它运行了多次。 CREATE TABLE IF NOT EXISTS将现有数据留在表中。您可能希望在插入新行之前清空表:TRUNCATE TABLE mydb.Team。或者,更通俗地说,DROP TABLE IF EXISTS之前CREATE,所以你知道它每次都是空的。