2016-04-13 19 views
1

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

cevap

4

bu deneyin;

CREATE TABLE `OLTPTEST`.`PersonEmail` (
    `PersonEmailId` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, 

Bu yüzden bu hatayı alıyorsunuz;

+2

Ben şu anda çok aptal hissediyorum ... teşekkür ederiz! – christo8989