Question

J'ai revérifié mon schéma, et sa doctrine correcte ... enfait aussi construit une fois .. et maintenant son me trouble avec des relations FK ... J'ai vérifié les données-types ainsi. Tous sont int (4) ou int (2)

2 Qs ici: 1. est-il une limite supérieure au pas de relations (dépendances / FKs) une table peut avoir? J'ai jusqu'à 7 tables dans un FKs 2. est-il une limite supérieure au pas des tableaux faisant référence une table parent (PK)? J'ai jusqu'à 30 champs dans 20 tableaux faisant référence à une seule colonne ID dans le tableau des options 3. La définition du comportement Cascase requis? Je ne l'ai pas utilisé!

Est-il préférable de vivre sans relations dans ce cas?

L'erreur est:

 SQLSTATE[HY000]: General error: 1005 Can't create table 'sokidb.#sql-268_1d' (errno: 121). Failing Query: "ALTER TABLE Acc_Gl_Accounts ADD CONSTRAINT Acc_Gl_Accounts_society_id_Soc_Societies_id FOREIGN KEY (society_id) REFERENCES Soc_Societies(id)". Failing Query: ALTER TABLE Acc_Gl_Accounts ADD CONSTRAINT Acc_Gl_Accounts_society_id_Soc_Societies_id FOREIGN KEY (society_id) REFERENCES Soc_Societies(id)  

J'ai aussi tiré les requêtes dans MySQL directement, il en résulte la même erreur.

Était-ce utile?

La solution

Les gens, au cours des derniers jours, je me suis rendu compte qu'il n'y a probablement pas de problème connu avec la doctrine.

Mon erreur a été que j'avais défini une option pour ma clé dans une table « unsigned: true » et ne se répète pas la même chose pour la définition FK :( Ma faute, mais la solution est vérifier votre type de données.

Et la meilleure façon de débogage erreurs liées à MySQL est de vérifier le script SQL généré. Vous pouvez facilement repérer les différences dans les définitions des colonnes.

Merci John, pour votre intérêt.

Autres conseils

Vous utilisez probablement des tables InnoDB, qui est par défaut pour les versions de MySQL modernes et signale une erreur de contrainte foreignkey. Lire ici pour une liste complète des requerments.

  

Les colonnes correspondantes dans l'étranger   clé et la clé référencée doit avoir   similaire types de données interne à l'intérieur   InnoDB afin qu'ils puissent être comparés   sans conversion de type. La taille   et le signe de types entiers doit être   même. La longueur des chaînes doivent   ne pas être le même. pour non binaire   (caractère) colonnes de chaîne, la   jeu de caractères et la collation doivent être   même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top