La restricción de clave externa de MariaDB está formada incorrectamente.
Estoy utilizando DBeaver para enviar esta solicitud SQL a mi Base de Datos MariaDB:
CREATE TABLE liaison_att_ae (
id_attestation INT(11),
id_ae INT(11),
PRIMARY KEY (id_attestation, id_ae),
FOREIGN KEY (id_attestation) REFERENCES attestation (id),
FOREIGN KEY (id_ae) REFERENCES ancien_employeur (id)
);
No estoy seguro de por qué, pero obtengo este error:
No se puede crear la tabla
database
.liaison_att_ae
(errno: 150 “La restricción de clave externa está formada incorrectamente”)
Las tablas attestation
y ancien_employeur
tienen ambas id
como clave primaria.
¿Qué estoy haciendo mal?
davy.ai
El mensaje de error indica que hay un problema con la restricción de clave externa en tu consulta SQL. Específicamente, el mensaje de error sugiere que la restricción está formada incorrectamente.
En tu declaración
CREATE TABLE
, has definido dos restricciones de clave externa, una paraid_attestation
y otra paraid_ae
. La clave externa paraid_attestation
hace referencia al campoid
en la tablaattestation
, y la clave externa paraid_ae
hace referencia al campoid
en la tablaancien_employeur
.Dado que tanto las tablas
attestation
comoancien_employeur
tienenid
como su clave primaria, es posible que el problema resida ahí. Específicamente, es posible que el campoid
en esas tablas no esté definido como un tipo de datoINT(11)
.Para resolver este problema, debes asegurarte de que el campo
id
en las tablasattestation
yancien_employeur
esté definido como un tipo de datoINT(11)
. Una vez que hayas hecho eso, deberías poder ejecutar tu declaraciónCREATE TABLE
sin ningún problema.Además, asegúrate de haber definido las tablas
attestation
yancien_employeur
antes de ejecutar esta consulta SQL para crear la tablaliaison_att_ae
, ya que las claves externas solo pueden crearse en tablas que ya existen en la base de datos.