ben yürütme ediyorum CreateDatabase.sql
ve SeedDatabase.sql
komut dosyaları için. CreateDatabase.sql
numaralı belgede, tamamen DROP
veri tabanından ve CREATE
numaralı telefondan. Bu iyi çalışıyor. Her bir tablodaki tüm verileri ve INSERT
verilerini yeniden , SeedDatabase.sql
, DELETE
adresindeki . Bu benim INSERT
tabloların ikisine kırar. Benim UNIQUE
kısıt diğer tablolarda (UNIQUE INDEX 'PersonId_EmailId_UNIQUE' ('PersonId', 'EmailId' ASC)
) iki farklı kimliklere dayalı olduğu içinMySQL: Hata Kodu: 1062 Mükerrer giriş '0' anahtar 'primer'
Error Code: 1062. Duplicate entry '0' for key 'PRIMARY'
Bu hata benim için bir anlam ifade etmiyor. Ben de (geçerli tekrarlanan kimlikleri ile) aynı şekilde oluşturulur ve bozmazlar diğer tablolar var.
Herhangi bir yardım çok takdir edilecektir. Şimdiden teşekkür ederim!
MySQL: CreateDatabase.sql
CREATE TABLE `OLTPTEST`.`PersonEmail` (
`PersonEmailId` INT(11) UNSIGNED NOT NULL,
`PersonId` INT(11) UNSIGNED NOT NULL,
`EmailId` INT(11) UNSIGNED NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT NOW(),
PRIMARY KEY (`PersonEmailId`),
UNIQUE INDEX `PersonEmailId_UNIQUE` (`PersonEmailId` ASC),
INDEX `PersonId_INDEX` (`PersonId` ASC),
INDEX `EmailId_INDEX` (`EmailId` ASC),
UNIQUE INDEX `PersonId_EmailId_UNIQUE` (`PersonId`, `EmailId` ASC),
CONSTRAINT `PersonEmail_PersonId_FOREIGN`
FOREIGN KEY (`PersonId`)
REFERENCES `OLTPTEST`.`Person` (`PersonId`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `PersonEmail_EmailId_FOREIGN`
FOREIGN KEY (`EmailId`)
REFERENCES `OLTPTEST`.`Email` (`EmailId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
MySQL: SeedDatabase.sql
SET SQL_SAFE_UPDATES = 0;
DELETE FROM `OLTPTEST`.`PersonEmail`;
ALTER TABLE `OLTPTEST`.`PersonEmail` AUTO_INCREMENT = 1;
INSERT INTO `OLTPTEST`.`PersonEmail` (PersonId, EmailId)
VALUES
(1, 1)
,(1, 2)
,(2, 3)
,(3, 4)
,(4, 5)
;
Bu tabii tüm kodu değil ama yeterli olmalı.
Sen tablo tanımında AUTO_INCREMENT
eklemeyi unuttuğu);
Ben şu anda çok aptal hissediyorum ... teşekkür ederiz! – christo8989