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

Problema tonto con las claves primarias

Estas en el tema de Problema tonto con las claves primarias en el foro de Mysql en Foros del Web. Hola a todos, tengo un problema tonto a ver si alguien me echa un cable. Tengo dos tablas: USUARIOS (Datos básicos de cada usuario) - ...
  #1 (permalink)  
Antiguo 14/08/2011, 09:24
 
Fecha de Ingreso: marzo-2011
Mensajes: 88
Antigüedad: 13 años, 1 mes
Puntos: 17
Problema tonto con las claves primarias

Hola a todos, tengo un problema tonto a ver si alguien me echa un cable.

Tengo dos tablas:

USUARIOS (Datos básicos de cada usuario)

- id_usuario (clave principal)

- nombre de usuario

- email

- contraseña

Por otro lado tengo otra que contiene datos mas especificos, que rellenan una vez entran como usuarios.

Tabla 'PERFILES'

- id_usuario (clave principal y FK de la tabla USUARIOS)

- nombre

- ciudad

- etc....

El tema es que en la tabla USUARIOS, ya tengo creados unos cuantos usuarios, y en la tabla 'PERFILES' no hay dato alguno..... Cuando a mi parecer debería de salir los ids que tengo almacenados en la otra tabla y los demas campos de momento vacíos esperando a que se rellene el formulario.....

El tema es que yo con PHP recogo el id del usuario que está navegando y le digo que meta todos los datos que corresponde a 'PERFIL' cuyo ID_USUARIO coincida, PERO si no tengo un id para comparar no puedo meter los datos!!!!!

Como debo hacer para tener los mismos datos en una celda y en otra?

Lo he realizado con MySql Administrator, le he dicho que On delete Cascade, On Update Cascade y todo eso pero no se que puedo estar haciendo mal.
  #2 (permalink)  
Antiguo 14/08/2011, 11:53
 
Fecha de Ingreso: marzo-2011
Mensajes: 88
Antigüedad: 13 años, 1 mes
Puntos: 17
Respuesta: Problema tonto con las claves primarias

Hola a todos otra vez jejeje, he estado dando mil vueltas y sigo sin conseguir que me funcione... El caso es que he borrado la table 'perfiles' y desde Query Browser la he vuelto a crear de esta manera:

Código:
  CREATE TABLE perfil (
     id_perfil INT NOT NULL,
     id_usuario SMALLINT,
     PRIMARY KEY (id_perfil),
     KEY(id_usuario),
     FOREIGN KEY (id_usuario)
     REFERENCES usuarios(id_usuario)
     ON DELETE CASCADE
     ON UPDATE CASCADE
     ) ENGINE=InnoDB;
Y me salta el error 150 :

Cita:
Can't create table './pruebas/perfil.frm' (errno: 150)
El caso es que los tipos de datos están correctos, id_usuario es de tipo smallint... y la verdad es que no se que puede estar pasando. Trabajo en InnoDB, no se que problema puede haber con las referencias...

Si alguien le echa un vistazo y ve algo raro o se le ocurre algo por el tipo de error se agradece, porque me está volviendo loco la tontería esta...
  #3 (permalink)  
Antiguo 14/08/2011, 13:57
 
Fecha de Ingreso: mayo-2011
Mensajes: 44
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: Problema tonto con las claves primarias

en el segundo post que pusiste veo que pusiste KEY(id_usuario) no entiendo muy bien para que lo haces la verdad y creo que podria ser tu error

y en el primero una pregunta:¿cuando insertas en la tabla usuarios, tambien insertas en la tabla perfiles?

espero tus respuestas para poder ayudarte
  #4 (permalink)  
Antiguo 14/08/2011, 14: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: Problema tonto con las claves primarias

No parece ser un problema de claves primarias sino de claves foraneas.
La FK debe estar referida a la PK de otra tabla, pero si ambas tablas tienen datos es muy habitual que haya algún valor en la tabla dependiente que no cumpla con la restricción de FK. En esos casos la creación de la tabla siempre falla.
Otra razón de errores es si los campos de ambas tablas son de diferente tipo, rango o COLLATION si son de caracteres. Para el caso, el id_usuario de la tabla usuarios tiene que ser también SMALLINT.
Verifica ambas cosas.
__________________
¿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: campos, claves, php, 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 00:47.