본문 바로가기
MySql

MySQL 유효한 제약 조건이있는 "SQLSTATE [23000] : 무결성 제약 조건 위반"

by 베이스 공부 2020. 9. 18.
반응형

저는 Doctrine과 함께 Symfony 2를 사용하고 있습니다.

저는 국가, 지구, 카운티 및 지역의 4 개의 클래스가 있습니다. 지구에는 국가의 외래 키가 있습니다. 카운티에는 지구 외국인이 있습니다. Local에는 District의 외래 키가 있습니다.

문제는 카운티를 삽입 할 때 (데이터 고정 장치 사용) 오류가 발생한다는 것입니다.

SQLSTATE[23000]: Integrity constraint violation:

SQL을 덤프하여 테이블과 제약 조건을 만들고 이것을 얻었습니다.

CREATE TABLE Country (id INT AUTO_INCREMENT NOT NULL, 
name VARCHAR(255) NOT NULL, 
insertedAt DATETIME NOT NULL, 
flag LONGTEXT DEFAULT NULL COMMENT '(DC2Type:object)', 
PRIMARY KEY(id)) ENGINE = InnoDB;


CREATE TABLE County (id INT AUTO_INCREMENT NOT NULL, 
name VARCHAR(255) NOT NULL, 
insertedAt DATETIME NOT NULL, 
insertedBy INT NOT NULL, 
idDistrict INT NOT NULL, 
INDEX IDX_5F4EFA13438082DC (insertedBy), 
INDEX IDX_5F4EFA1362627EDC (idDistrict), 
PRIMARY KEY(id)) ENGINE = InnoDB;


CREATE TABLE District (id INT AUTO_INCREMENT NOT NULL, 
name VARCHAR(255) NOT NULL, 
insertedAt DATETIME NOT NULL, 
insertedBy INT NOT NULL, 
idCountry INT NOT NULL, 
INDEX IDX_C8B736D1438082DC (insertedBy), 
INDEX IDX_C8B736D143CAA294 (idCountry), 
PRIMARY KEY(id)) ENGINE = InnoDB;


CREATE TABLE LOCAL (id INT AUTO_INCREMENT NOT NULL, 
name VARCHAR(255) NOT NULL, 
insertedAt DATETIME NOT NULL, 
insertedBy INT NOT NULL, 
idCounty INT NOT NULL, 
INDEX IDX_4A17A7EC438082DC (insertedBy), 
INDEX IDX_4A17A7EC3BF357BF (idCounty), 
PRIMARY KEY(id)) ENGINE = InnoDB;


ALTER TABLE County ADD CONSTRAINT FK_5F4EFA13438082DC
FOREIGN KEY (insertedBy) REFERENCES Account(id);


ALTER TABLE County ADD CONSTRAINT FK_5F4EFA1362627EDC
FOREIGN KEY (idDistrict) REFERENCES District(id);


ALTER TABLE District ADD CONSTRAINT FK_C8B736D1438082DC
FOREIGN KEY (insertedBy) REFERENCES Account(id);


ALTER TABLE District ADD CONSTRAINT FK_C8B736D143CAA294
FOREIGN KEY (idCountry) REFERENCES Country(id);


ALTER TABLE LOCAL ADD CONSTRAINT FK_4A17A7EC438082DC
FOREIGN KEY (insertedBy) REFERENCES Account(id);


ALTER TABLE LOCAL ADD CONSTRAINT FK_4A17A7EC3BF357BF
FOREIGN KEY (idCounty) REFERENCES County(id);

PhpMyAdmin을 사용하여 County를 삽입하려고 시도했지만 동일한 오류가 발생했기 때문에 문제는 DataFixture 자체에 없습니다.

모든 테이블은 InnoDB 엔진에서 생성되며 국가와 지구를 성공적으로 생성 할 수 있습니다. 이 오류는 카운티 법인에서만 발생합니다.

감사

 

해결 방법

 

MAMP Pro를 제거하고 apache, mysql 및 php를 하나씩 설치하십시오. 이 새로운 환경에서 동일한 프로젝트가 작동했습니다.

 

참조 페이지 https://stackoverflow.com/questions/9934387

 

 

반응형

댓글