programing

MySQL 오류 1062: 키에 대한 중복 항목

css3 2023. 11. 6. 21:59

MySQL 오류 1062: 키에 대한 중복 항목

장고 프레임워크와 함께 사용할 몇 개의 테이블을 만들고 채우는 SQL 스크립트를 만들었습니다.

날짜 테이블에서 다음과 같이 UNIECIAL 제약 조건을 사용하여 모이 열을 만듭니다.

    CREATE TABLE date (
        dateID int NOT NULL,
        annee int NOT NULL,
        mois int NOT NULL,
        .
        .
        CONSTRAINT PK_date PRIMARY KEY (dateID, annee, mois, semaine, jour),
        UNIQUE KEY idx_mois (mois),
    ) Engine=innoDB;

FKs 정의는 다음과 같습니다.

CREATE TABLE astreinte_mensu (
dateID int NOT NULL PRIMARY KEY,
annee int,
mois int,
Personne1Nuit int,
Personne2Nuit int,
Personne1Jour int,
Personne2Jour int,
FOREIGN KEY (annee) REFERENCES date(annee),
FOREIGN KEY (mois) REFERENCES date(mois),
FOREIGN KEY (Personne1Nuit) REFERENCES contact(PersonID),
FOREIGN KEY (Personne2Nuit) REFERENCES contact(PersonID),
FOREIGN KEY (Personne1Jour) REFERENCES contact(PersonID),
FOREIGN KEY (Personne2Jour) REFERENCES contact(PersonID)

) Engine=innoDB;

스크립트의 후반부에 절차 fill_date:

CREATE PROCEDURE fill_date()
BEGIN
DECLARE currentdate DATE;
DECLARE stopdate DATE;
SET currentdate = CURDATE();
SET stopdate = ADDDATE(currentdate, INTERVAL 1 YEAR);
WHILE currentdate < stopdate DO
INSERT INTO date VALUES (
YEAR(currentdate)*10000+MONTH(currentdate)*100 + DAY(currentdate),
YEAR(currentdate),
MONTH(currentdate),
WEEKOFYEAR(currentdate),
DAY(currentdate));

SET currentdate = ADDDATE(currentdate,INTERVAL 1 DAY);
END WHILE;
END

파일을 실행할 때 중복 입력과 관련된 오류가 발생했습니다.

그래서 내 테이블은 2018년 6월부터 2019년 6월까지인데 그것 때문에 오류가 발생하고 있습니다.

121행의 오류 1062(23000): 키 'idx_mois'에 대한 중복 항목 '6'이(가) 있습니다.

누가 내 양초에 불을 붙여줄 수 있습니까?

EDIT: Astreinte_mensu를 링크하고 싶기 때문에 장고의 ForeignKey.to _field 인수에 UNIQUE 제약 조건이 필요합니다.Mois 필드에서 Date.mois 필드로 이동합니다.이렇게 해서 이 django admin 페이지의 스크린샷처럼 완전한 날짜가 아닌 months가 표시되었으면 좋겠습니다.

날짜의 구성요소에 대한 열이 없으며 대신에 분할합니다.SELECT다양한 날짜 시간 함수를 사용하는 쪽

숫자 및 문자열 함수보다 선호하는 날짜 산술 함수를 사용합니다.CURDATE() - INTERVAL 2 MONTH.

UNIQUE KEY idx_mois (mois)당신이 그 표에서 12개 이상의 행을 가질 수 없다는 것을 의미합니까?아니면 어떻게든 12개월 이상의 시간이 있습니까?아마도 당신이 의도한 것은 아니었을 것입니다.UNIQUE?

언급URL : https://stackoverflow.com/questions/50854119/mysql-error-1062-duplicate-entry-for-key