繁体   English   中英

具有有效约束的“ SQLSTATE [23000]:违反完整性约束”

[英]“SQLSTATE[23000]: Integrity constraint violation” with valid constraint

我正在使用Symfony 2和Doctrine。

我有4个班级:国家,地区,县和地方。 区具有国家/地区的外键; 县有外国人区; 本地具有区的外键。

问题是,在插入县(使用数据固定装置)时,出现错误

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

问题不在于DataFixture本身,因为我尝试使用PhpMyAdmin插入县并得到相同的错误。

所有表都在InnoDB引擎中创建,我可以成功创建一个国家和地区。 该错误仅在县实体中发生。

谢谢

您的装置文件可能正在尝试为County插入一行,没有对应的行与accountId或districtId相匹配。

ALTER TABLE县添加约束FK_5F4EFA13438082DC外键(插入)参考帐户(id);

此键强制您确保您输入到“ County表中的account ID在account表中具有匹配的ID。

ALTER TABLE县添加约束FK_5F4EFA1362627EDC外键(idDistrict)参考District(id);

与accountId相同,但在district表中没有匹配的ID。

因此,在插入县行之前,请仔细检查您的装置文件,并确保已插入(并提交)区和帐户行。

在MySQL(x86_64)中,MySQL服务器5.6.33-79.0 Percona Server(GPL),版本79.0,修订版2084bdb中实际上存在一个错误

安装了MAMP Pro,并一一安装了apache,mysql和php。 在这个新环境下同一个项目

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM