Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Fehler:Fremdschlüsselbeschränkung kann nicht hinzugefügt werden?

Hier verweisen Sie falsch auf REFERENCES users(from_uid) in der letzten Tabelle.

FOREIGN KEY(from_uid) REFERENCES users(from_uid)

from_uid nicht zu users gehören

Dies sollte

sein
FOREIGN KEY(from_uid) REFERENCES users(uid)

deine playLists table hat eine Primärschlüsselkombination aus vier Spalten, daher sollten Sie alle diese vier Spalten als Fremdschlüssel in der u_share_pl table angeben .

Ein weiterer zusammengesetzter Schlüssel als Referenz sollte eine einzelne Einschränkung wie

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

Ihre letzte Tabelle Create sollte sein:

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