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

problema con Mysql...

Estas en el tema de problema con Mysql... en el foro de Bases de Datos General en Foros del Web. buenos dias tengo un problema con una tabla en mysql. tengo una tabla con los campos username y fechas, username es Primarykey varchar(20) , y ...
  #1 (permalink)  
Antiguo 03/11/2008, 03:22
 
Fecha de Ingreso: octubre-2008
Mensajes: 112
Antigüedad: 16 años, 4 meses
Puntos: 0
problema con Mysql...

buenos dias tengo un problema con una tabla en mysql. tengo una tabla con los campos username y fechas, username es Primarykey varchar(20) , y fechas es date NOT NULL.

Bueno al principio date tenia sin el NOT NULL, esto lo puse para evitar no introducir fechas NULAS, y a partir de aqui los problemas. Tengo un calendario php el cual introducia las fechas correctamente, pero al cambiar el campo fechas y añadirle NOT NULL solo me inserta la primera fecha aunque eliga 20 dias.
  #2 (permalink)  
Antiguo 03/11/2008, 04:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses
Puntos: 2658
Respuesta: problema con Mysql...

El problema huele a programación.
Me explico:
Si ingresas los datos a través de un formulario en el que puedes poner varios usuarios al mismo tiempo (según se infiere de lo que dices), entonces debes estar haciendo algún ciclo repetitivo (Do, While, For o lo que sea) que genere los inserts adecuados. Si además lo que sucede es que sólo ingresa el primer registro del conjunto, y únicamente puede no ingresar ante el incumplimiento del NOT NULL, la respuesta es evidente: La variable que usas para tomar la fecha se vuelve NULL después del primer ciclo, o bien los valores de esos campos no se transfieren a la variable usada para enviar la fecha a la base.
En cualquier caso es un problema de implementación del formulario y no de la base de datos. Sería mejor que revises los valores que se cargan en cada ciclo del loop y verifiques con el foro correcto (eso es base de datos y acá lo que vale es el SQL...)
__________________
¿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/11/2008, 04:35
 
Fecha de Ingreso: octubre-2008
Mensajes: 112
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problema con Mysql...

la variable que uso vale NULL en el primer ciclo, pero empiezo un ciclo mas adelante para hacer las INSERTs, en vez de for (i=0;.......) empiezo en for (i=1;...........) evitando y comprobando que no inserto el null, es decir el incorporar el NOT NULL es para evitar otro error.
  #4 (permalink)  
Antiguo 03/11/2008, 05:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses
Puntos: 2658
Respuesta: problema con Mysql...

Postea la estructura de las tablas involucradas y algunas de las sentencias de INSERT que se contruyen (Atención: las sentencias creadas con sus valores, no el código de programación, porque eso no permite saber si hay un error, y además en esta sección no se debe poner código no SQL)
Vamos a tener que analizar el problema en forma práctica para comprender en qué fase se produce el error.
__________________
¿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/11/2008, 06:34
 
Fecha de Ingreso: octubre-2008
Mensajes: 112
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problema con Mysql...

describe tabla1:

+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
username | varchar(20) | NO | PRI | | |
fechas | date | NO | | | |
+----------+-------------+------+-----+---------+-------+

ahora veo claro el error que me da al hacer la insert, una vez que inserta uno, saca esto.

mysql> insert into solicitados (username,fechas) values ('JUAN','2008-11-5');
ERROR 1062 (23000): Duplicate entry 'JUAN' for key 1

aunque no entiendo el porque ya que mi intencion es que cada usuario pueda seleccionar Uno o Varios Dias, y como clave principal el campo username seria el correcto no ??
  #6 (permalink)  
Antiguo 03/11/2008, 07:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses
Puntos: 2658
Respuesta: problema con Mysql...

No. Porque estás confundiendo la tabla de usuarios con la tabla que guarda los días elegidos.
Una clave primaria es un campo que NUNCA se repite, y en tu caso, el username puede repetirse al permitir que cada usuario pueda aparecer vinculado a diferentes días al mismo tiempo.
El tema es que en un sistema con usuarios, debe existir una tabla que almacene los datos de usuarios. En esa el username sería PK.
Pero si el username se usa como elemento de identificación de otro dato (supongamos sesiones), cada sesión está asociada a un usuario, pero un usuario puede tener muchas sesiones. Esa relación se denomina 1:N y se expresa en una tabla diferente, haciendo que el username se combine con otro campo (supongamos la fecha y hora de inicio de casa sesión), con la condición que nunca se de otra combinación igual.
En ese caso la PK se construye con AMBOS campos como PK. De esta forma se genera, a nivel de DER una relación y entidad débil, y a nivel físico, una tabla independiente de Usuarios.
¿Se comprende la idea?
__________________
¿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/11/2008, 09:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 112
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problema con Mysql...

Entendido, no habia caido pero si vamos, me ha quedado claro como el agua.

Muchas Gracias,
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 13:37.