Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ERROR 1215 cannot add foreing key constraint

Estas en el tema de ERROR 1215 cannot add foreing key constraint en el foro de Mysql en Foros del Web. Hola, estoy haciendo un pequeño proyecto relacionado con bases de datos y me da el error 1215 cannot add foreing key constraint. Les dejo aqui ...
  #1 (permalink)  
Antiguo 15/11/2013, 20:21
 
Fecha de Ingreso: enero-2012
Ubicación: Asturias
Mensajes: 3
Antigüedad: 12 años, 3 meses
Puntos: 0
ERROR 1215 cannot add foreing key constraint

Hola, estoy haciendo un pequeño proyecto relacionado con bases de datos y me da el error 1215 cannot add foreing key constraint.
Les dejo aqui las tablas por si me pueden echar una mano.
El error me lo da al insertar la tabla jugadores.
Gracias de antemano.

Código MySQL:
Ver original
  1. create table usuario (
  2. id_usuario int(10) not null auto_increment,
  3. nombre_usuario varchar(25) not null,
  4. apellido1 varchar(25) not null,
  5. apellido2 varchar(25) not null,
  6. usuario varchar(20) not null,
  7. contraseña varchar(20) not null,
  8. email varchar(40) not null,
  9. dinero int(10) not null,
  10. primary key(id_usuario)
  11.  
  12. create table equipo (
  13. id_equipo int(10) not null auto_increment,
  14. nombre_equipo varchar(50) not null,
  15. id_usuario int(10) not null,
  16. primary key(id_equipo),
  17. index(id_usuario),
  18. foreign key (id_usuario) references usuario(id_usuario) on update cascade on delete cascade
  19.  
  20. create table jugador (
  21. id_jugador int(10) not null auto_increment,
  22. nombre_jugador varchar(40) not null,
  23. posicion varchar(13) not null,
  24. precio int(10) not null,
  25. puntos int(5) not null,
  26. estado varchar(30),
  27. nombre_equipo varchar(50) not null,
  28. primary key(id_jugador),
  29. index(nombre_equipo),
  30. foreign key (nombre_equipo) references equipo(nombre_equipo)
  #2 (permalink)  
Antiguo 16/11/2013, 10:06
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: ERROR 1215 cannot add foreing key constraint

Seguramente no estés apuntando bien a la llave primaria.

Última edición por PHPeros; 16/11/2013 a las 10:17
  #3 (permalink)  
Antiguo 16/11/2013, 10:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ERROR 1215 cannot add foreing key constraint

Estás intentando establecer una Fk apuntando a un campo que no es clave primaria:
Código MySQL:
Ver original
  1. CREATE TABLE jugador (
  2. i...
  3. FOREIGN key (nombre_equipo) REFERENCES equipo(nombre_equipo)
La clave primaria de EQUIPO es ID_EQUIPO, no NOMBRE_EQUIPO.

Una FK es un campo o conjunto de campos (caso de PK compuesta), que apunta a la PK de otra tabla, o bien a una clave UNIQUE de esa tabla (extensión de MySQL a las FK).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 17/11/2013, 16:29
 
Fecha de Ingreso: enero-2012
Ubicación: Asturias
Mensajes: 3
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: ERROR 1215 cannot add foreing key constraint

Muchas gracias por vuestras respuestas. Estoy empezando y no tengo mucha idea.
  #5 (permalink)  
Antiguo 17/11/2013, 17:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ERROR 1215 cannot add foreing key constraint

Por allí debes tener en cuenta recordar lo que significa literalmente FK: foreign key, es decir, clave foránea, externa o ajena, es decir, una clave que proviene de otra parte (otra tabla), por ende el origen no puede sino ser una clave, entendiendo por tales única y exclusivamente a las claves primarias (las otras, las de los indices tipo INDEX no cuentan para las relaciones entre tablas).

Por cierto: vas a notar que yo jamás uso la expresión "llave" al referirme a las claves, porque por un lado la palabra "llave" no es suficientemente descriptiva de lo que es la clave, y por otro lo consideramos una traducción literal demasiado mala.
No es necesaria la traducción literal de algo que en realidad es un concepto que ya existe en otros elementos de informática. Nadie que yo conozca llama "llave" al identificador de un diccionario, es decir un par clave/valor.
¿o si?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:50.