Mysql
 sql >> Database >  >> RDS >> Mysql

Errore MySQL:non è possibile aggiungere un vincolo di chiave esterna?

Ecco il tuo riferimento errato per REFERENCES users(from_uid) nell'ultima tabella.

FOREIGN KEY(from_uid) REFERENCES users(from_uid)

from_uid non appartengono a users

Questo dovrebbe essere

FOREIGN KEY(from_uid) REFERENCES users(uid)

la tua playLists table ha una combinazione di chiavi primarie di quattro colonne, quindi dovresti fornire tutte queste quattro colonne come chiave forieng nella u_share_pl table .

Un'altra chiave composita come riferimento dovrebbe essere un singolo vincolo come

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

La tua ultima tabella Crea dovrebbe essere:

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