Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro do MySQL:Não é possível adicionar restrição de chave estrangeira?


Aqui está a referência errada forgien REFERENCES users(from_uid) na última tabela.
FOREIGN KEY(from_uid) REFERENCES users(from_uid)

from_uid não pertence a users

Isso deve ser
FOREIGN KEY(from_uid) REFERENCES users(uid)

sua playLists table tem uma combinação de chave primária de quatro colunas, então você deve fornecer todas essas quatro colunas como chave forieng na u_share_pl table .

Outra chave composta como referência deve ser uma única restrição como
FOREIGN KEY(from_uid,sid,plname,plmdate,plmtime) REFERENCES playlists(uid,sid,plname,plmdate,plmtime)

Sua última tabela Create deve ser:
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)
);