操作已完成但出现错误,当我转发工程师时出现此错误: 这与独特的钥匙有关吗?或不?由于此错误,它会设计一些表,而其他表不会使用数据创建。
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;
答案 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
,所以你知道它每次都是空的。