sql >> Base de Datos >  >> RDS >> Mysql

Error de MySQL:¿No se puede agregar una restricción de clave externa?

Aquí está su referencia incorrecta forgien REFERENCES users(from_uid) en la última tabla.

FOREIGN KEY(from_uid) REFERENCES users(from_uid)

from_uid no pertenecer a users

Esto debería ser

FOREIGN KEY(from_uid) REFERENCES users(uid)

tu playLists table tiene una combinación de clave principal de cuatro columnas, por lo que debe proporcionar todas estas cuatro columnas como clave forieng en la tabla u_share_pl table .

Otra clave compuesta como referencia debería ser una restricción única como

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

Su última tabla Crear debe 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)
);