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

[SOLUCIONADO] Error creo que de claves foraneas

Estas en el tema de Error creo que de claves foraneas en el foro de Mysql en Foros del Web. Cita: Executing SQL script in server ERROR: Error 1005: Can't create table 'bd.amigos' (errno: 150) @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE   TABLE IF ...
  #1 (permalink)  
Antiguo 03/07/2013, 05:01
 
Fecha de Ingreso: mayo-2013
Mensajes: 34
Antigüedad: 10 años, 11 meses
Puntos: 0
Error creo que de claves foraneas

Cita:
Executing SQL script in server

ERROR: Error 1005: Can't create table 'bd.amigos' (errno: 150)
Código SQL:
Ver original
  1. CREATE  TABLE IF NOT EXISTS `bd`.`amigos` (
  2.  
  3.   `id1` VARCHAR(50) NOT NULL ,
  4.  
  5.   `id2` VARCHAR(50) NOT NULL ,
  6.  
  7.   PRIMARY KEY (`id1`, `id2`) ,
  8.  
  9.   CONSTRAINT `amig`
  10.  
  11.     FOREIGN KEY (`id1` , `id2` )
  12.  
  13.     REFERENCES `bd`.`usuarios` (`user` , `user` )
  14.  
  15.     ON DELETE CASCADE
  16.  
  17.     ON UPDATE CASCADE)
  18.  
  19. ENGINE = InnoDB
  20.  
  21. DEFAULT CHARACTER SET = latin1
  22.  
  23. SQL script execution finished: statements: 8 succeeded, 1 failed

Esta es una tabla en la que quiero poner el id de un usuario y el de otro para juntarlos y que sean amigos, supongo que falla porque las 2 FK hacen referencia a una misma tabla y campo concreto, pero no se me ocurre otra manera

Última edición por gnzsoloyo; 03/07/2013 a las 05:29
  #2 (permalink)  
Antiguo 03/07/2013, 05:32
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 creo que de claves foraneas

Una FK es un campo o conjunto de campos que se referencia a la clave primaria (PK) de otra tabla.
Si la tabla "Usuario" tiene la PK como un sólo campo, debes definir una FK por cada uno de los usuarios que serán amigos. No puedes crear una FK multiple si la PK de referencia no es de campo múltiple.
Por otro lado, ¿la PK de la tabla "Usuarios", es "user" o es "id"?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/07/2013, 05:33
 
Fecha de Ingreso: mayo-2013
Mensajes: 34
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Error creo que de claves foraneas

Hola, es User, id no existe.

Entonces como podría hacer una tabla que tuviese 2 usuarios para saber que son amigos?

saludos! y gracias por contestar
  #4 (permalink)  
Antiguo 03/07/2013, 05:44
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 creo que de claves foraneas

Ya te respondí: Cada campo de tu tabla que se refiera a la PK de Usuarios debe ser una FK por separado.
¿Qué es lo que te presenta dudas?
La sintaxis que tienes está básicamente bien, excepto porque intentas apuntar ambos campos como FKL al mismo tiempo, y eso es imposible en este caso.
Debes tener dos declaraciones de FK en esa sentencia, una para cada uno de los campos.

Escríbelo y postealo. Veremos si te quedó clalro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/07/2013, 05:47
 
Fecha de Ingreso: mayo-2013
Mensajes: 34
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Error creo que de claves foraneas

Vamos a ver, no tengo dudas de la sintaxi con lo que me has dicho, ni dudas con el problema, tengo dudas del concepto, porque al no poder hacer una FK de una sola PK no puedo hacer funcionar el sistema amigos, y pido ayuda para enfocar eso en algo que funcione.
  #6 (permalink)  
Antiguo 03/07/2013, 06:07
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 creo que de claves foraneas

Vamos a ver si se entiende, porque en realidad estás tan cerca que me cuesta comprender por qué te te produce dudas.
Si tienes las tablas
Cita:
A(id)
B(id1, id2)
y tanto id1 como id2 deben ser FK de A, entoncesw es simplemente
Código MySQL:
Ver original
  1. id1 ...,
  2. id2 ...,
¿No te parece es exactamente eso lo que te estoy diciendo?

No termino de comprender qué parte te confunde...

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 03/07/2013, 06:23
 
Fecha de Ingreso: mayo-2013
Mensajes: 34
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Error creo que de claves foraneas

No te entendía, pero ahora ya sí, ya funciona todo, muchas gracias, lo marco como solucionado!
  #8 (permalink)  
Antiguo 03/07/2013, 07:04
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 creo que de claves foraneas



__________________
¿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: campo, claves, sql, tabla
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 03:22.