“SQLSTATE[23000]: Integrity constraint violation” en cours de validité avec contrainte

Je suis en utilisant Symfony 2 avec la Doctrine.

J'ai 4 classes: Pays, un District, un Comté et Locales. Le District a une clé étrangère du Pays; le Comté a un étranger de District; Local dispose d'une clé étrangère de District.

Le problème est que lors de l'insertion d'un Comté (à l'aide de jeux de données de test), j'obtiens l'erreur

SQLSTATE[23000]: Integrity constraint violation:

J'ai perdu le code SQL pour créer les tables et les contraintes, et obtenu ceci:

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

Le problème n'est pas dans le DataFixture lui-même parce que j'ai essayé d'insérer un Comté à l'aide de PhpMyAdmin et j'ai obtenu le même message d'erreur.

Toutes les tables sont créées dans le moteur InnoDB et je peux créer avec succès un Pays et d'un District. L'erreur se produit uniquement avec le Comté de l'entité.

Grâce

  • C'est pourquoi vous devez vous écrire de SQL à la main .. ehh. De toute façon. Avez-vous remarqué, qu'il y a deux définitions de Country table? Aussi il serait bien, si vous souhaitez fournir les données, qui peuvent reproduire l'erreur.
  • Non, une définition est pour le pays, l'autre pour le comté (n r).
  • Oh .. les américains.