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)
¿Fue útil?

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
scroll top