«SQLSTATE [23000]: нарушение ограничения целостности» с допустимым ограничением - PullRequest
0 голосов
/ 30 марта 2012

Я использую Symfony 2 с Doctrine.

У меня есть 4 класса: Country, District, County и Local.Район имеет внешний ключ страны;Округ имеет иностранного округа;У 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);

Проблема не в самой DataFixture, потому что я попытался вставить округ с помощью PhpMyAdmin и получил ту же ошибку.

Все таблицы созданы в движке InnoDBи я могу успешно создать страну и район.Ошибка происходит только с округом.

Спасибо

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Ваш файл фикстуры, вероятно, пытается вставить строку для County, для которой нет соответствующей строки, соответствующей accountId или districtId.

ALTER TABLE County ADD CONSTRAINT FK_5F4EFA13438082DC КЛЮЧЕВОЙ КЛЮЧ (вставленный) Ссылки Личный кабинет (id);

Этот ключ заставляет вас убедиться, что учетная запись, которую вы вводите в таблицу County, имеет соответствующий идентификатор в таблице account.

ALTER TABLE County ADD CONSTRAINT FK_5F4EFA1362627EDC ИНОСТРАННЫЙ КЛЮЧ (idDistrict) ССЫЛКИ Район (id);

То же, что и accountId, но в таблице district нет идентификатора.

Так что дважды проверьте ваш файл фикстур и убедитесь, что строки округа и счета вставлены (и зафиксированы) перед вставкой строки округа.

0 голосов
/ 24 марта 2017

На самом деле в MySQL существует ошибка 5.6.33-79.0 Percona Server (GPL), выпуск 79.0, версия 2084bdb в Linux (x86_64)

0 голосов
/ 07 апреля 2012

Unistalled MAMP Pro и установленный apache, mysql и php один за другим.Тот же проект работал в этой новой среде

...