0

J'ai vérifié mon schéma, et sa doctrine correcte ... infact l'a également construite une fois ... et maintenant elle me dérange avec certaines relations FK ... J'ai vérifié pour les types de données aussi bien. Tous sont int (4) ou int (2)Problèmes avec l'ajout de relations FK via Doctrine Build Tâche

2 Qs ici: 1. Y at-il une limite supérieure au nombre de relations (dépendances/FK) qu'une table peut avoir? J'ai jusqu'à 7 FK dans les tables 2. y a-t-il une limite supérieure au nombre de tables référençant une table parent (PK)? J'ai jusqu'à 30 champs dans 20 tableaux faisant référence à une seule colonne ID dans le tableau Options 3. La définition du comportement CASCASE est-elle requise? Je ne l'ai pas utilisé!

Vaut-il mieux 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.

+1

Pourriez-vous afficher la structure des tableaux: Acc_Gl_Accounts Soc_Societies – johnwards

Répondre

1

Les gens, ces derniers jours, j'ai réalisé qu'il n'y avait probablement aucun problème connu avec Doctrine.

Mon erreur a été que j'avais défini une option pour ma clé dans une table « non signé: true ». Et ne se répètent pas les mêmes pour la définition FK :( ma faute, mais la solution est à double vérifier vos types de données

Et la meilleure façon de déboguer les 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.

1

Vous utilisez probablement Tables INNODB, qui est la valeur par défaut pour les versions mysql modernes et rencontre une erreur de contrainte de clé étrangère. Read here pour une liste complète des besoins.

colonnes correspondantes dans la clé étrangère et la clé de référence doivent avoir types de données internes similaires à l'intérieur InnoDB afin qu'ils puissent être comparés sans conversion de type. La taille et le signe des types entiers doivent être identiques à . La longueur des types de chaînes doit être ne pas être identique. Pour les colonnes de caractères (caractères) non binaires, le jeu de caractères doit être identique à .

Questions connexes