Error al agregar clave extranjera
-
24-10-2019 - |
Pregunta
Tengo dos mesas: tab1,tab2
Quiero agregar una clave extranjera a TAB2 y escribir esta consulta
ALTER TABLE tab2
ADD FOREIGN KEY(name) REFERENCES tab1(name)
Pero recibo este error:
error 1005(HY000):can't create table 'club.#sql-6f0_2' (errno:150)
¿Qué está mal?
Edit
i write this tables only for test.
tab1
name char(20) private key
lname char(20)
tab2
ssn int private key
name char(20)
Solución
Le respondí esto hace aproximadamente una hora en un comentario sobre su otra pregunta, pero aquí está nuevamente:
Puede obtener detalles sobre ese error ejecutando SHOW ENGINE INNODB STATUS\G
y leyendo el LATEST FOREIGN KEY ERROR
sección.
Las razones más probables para esta falla:
- TAB1.Name y TAB2.Name no son exactamente el mismo tipo de datos
- tab1.name no es único
Otros consejos
prueba esto:
alter table tab2
add foreign key my_key(name) references tab1(name)
¿Quizás tu clave debería tener un nombre?
No puede definir claves extranjeras en los motores de almacenamiento MySQL predeterminados (ISAM, Myisam), usar innodb como motor y luego agregar restricciones de claves exteriores.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow