Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur MySQL :Impossible d'ajouter une contrainte de clé étrangère ?

Voici votre mauvaise référence forgien REFERENCES users(from_uid) dans le dernier tableau.

FOREIGN KEY(from_uid) REFERENCES users(from_uid)

from_uid n'appartiennent pas aux users

Cela devrait être

FOREIGN KEY(from_uid) REFERENCES users(uid)

votre playLists table a une combinaison de clé primaire de quatre colonnes, vous devez donc fournir toutes ces quatre colonnes en tant que clé forieng dans la u_share_pl table .

Une autre clé composite comme référence doit être une contrainte unique comme

FOREIGN KEY(from_uid,sid,plname,plmdate,plmtime) REFERENCES playlists(uid,sid,plname,plmdate,plmtime)

Votre dernière table créée devrait être :

CREATE TABLE u_share_pl(
uid INT NOT NULL,
from_uid INT NOT NULL,
sid INT NOT NULL,
plname VARCHAR(20) NOT NULL,
plmdate DATE NOT NULL,
plmtime TIME NOT NULL,
PRIMARY KEY(uid, from_uid, plname, plmdate, plmtime),
FOREIGN KEY(uid) REFERENCES users(uid),
FOREIGN KEY(from_uid,sid,plname,plmdate,plmtime) REFERENCES playlists(uid,sid,plname,plmdate,plmtime)
);