我正在使用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引擎中创建的,我可以成功创建一个国家和地区。只有县实体才会发生错误。
由于
答案 0 :(得分:1)
您的fixture文件可能正在尝试为County
插入一行,而该行没有与accountId或districtId匹配的对应行。
ALTER TABLE County ADD CONSTRAINT FK_5F4EFA13438082DC FOREIGN KEY(insertedBy)REFERENCES帐户(id);
此键强制您确保您输入County
表的内容在account
表中具有匹配的ID。
ALTER TABLE County ADD CONSTRAINT FK_5F4EFA1362627EDC FOREIGN KEY(idDistrict)REFERENCES区(id);
与accountId相同,但district
表中没有匹配的ID。
因此请仔细检查您的灯具文件,并确保在插入县行之前插入(并提交)了分区和帐户行。
答案 1 :(得分:0)
实际上MySQL服务器5.6.33-79.0中存在一个错误 Percona Server(GPL),版本79.0,修订版2084bdb 在Linux(x86_64)
答案 2 :(得分:-3)
Unmpalled MAMP Pro并逐个安装了apache,mysql和php。同一个项目在这个新环境下工作