Question

Je sais qu'il y a beaucoup de questions sur cette erreur, mais même en appliquant ce que j'ai glané de ceux-ci, je reçois toujours "Impossible de créer une table (errno: 150)"

CREATE TABLE sch_results
(
id INT NOT NULL AUTO_INCREMENT,
s_id INT UNSIGNED NOT NULL,
r_eid VARCHAR(10) NOT NULL,
cohorts INT,
allstudents INT,
comments TEXT,
PRIMARY KEY (id),
FOREIGN KEY (s_id) REFERENCES scholarships (id),
FOREIGN KEY (r_eid) REFERENCES sch_recommenders (eid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

J'ai vérifié que les clés étrangères sont toutes deux stockées exactement sous ce nom dans leurs tables respectives.
J'ai vérifié que leurs types de données respectifs correspondent à cette requête. J'ai vérifié que les deux tables existantes utilisent InnoDB et UTF8.
J'ai ajouté le non signé pas null aux clés étrangères.
J'ai indexé les deux clés étrangères dans leurs tables. Initialement, j'utilisais S_ID et R_ID, mais j'ai entendu dire que cela pourrait causer des problèmes.R_EID est également unique, alors je suis passé à cela.Ce n'est pas la clé primaire.

Qu'est-ce que je manque?Merci!

Leçon apprise: Vérifiez soigneusement tous les aspects de vos types de données!

Était-ce utile?

La solution 3

Éteint que la collation a été définie sur UTF8-UNICODE-CI au lieu de UTF8-General-CI.Corrigé et cela fonctionne maintenant.

Autres conseils

Pour essentiellement toutes les causes de cette erreur, voici une ressource exhaustive pour quelles causes errno 150 (et errno 121 / autres erreurs de clé étrangère) dans MySQL.

erreurs de clé étrangère MySQL et errno 150

Le problème est que les champs source et cible doivent être identiques dans tous les aspects.Par exemple, si le champ source a "non signé" éteint, et la cible a "non signé" sur, vous obtiendrez cette erreur.

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